java - 使用 BufferedImage 从 Java 中的 RGB 色彩空间获取灰度像素值

标签 java image-processing bufferedimage

任何人都知道转换从 <BufferedImage> getRGB(i,j) 返回的 RGBint 值的简单方法变成灰度值?

我打算通过使用它分解它们来简单地平均 RGB 值;

int alpha = (pixel >> 24) & 0xff;
int red = (pixel >> 16) & 0xff;
int green = (pixel >> 8) & 0xff;
int blue = (pixel) & 0xff;

然后平均红、绿、蓝。

但我觉得对于这样一个简单的操作我一定遗漏了一些东西......

在对不同问题做出很好的回答后,我应该弄清楚我想要什么。

我想获取从 getRGB(i,j) 返回的 RGB 值,并将其转换为 0-255 范围内的白色值,表示该像素的“暗度”。

这可以通过平均等方法来完成,但我正在寻找一个 OTS 实现来节省几行代码。

最佳答案

tutorial显示了 3 种方法:

通过改变ColorSpace

ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_GRAY);
ColorConvertOp op = new ColorConvertOp(cs, null);
BufferedImage image = op.filter(bufferedImage, null);

通过绘制成灰度 BufferedImage

BufferedImage image = new BufferedImage(width, height,
    BufferedImage.TYPE_BYTE_GRAY);
Graphics g = image.getGraphics();
g.drawImage(colorImage, 0, 0, null);
g.dispose();

通过使用GrayFilter

ImageFilter filter = new GrayFilter(true, 50);
ImageProducer producer = new FilteredImageSource(colorImage.getSource(), filter);
Image image = this.createImage(producer);

关于java - 使用 BufferedImage 从 Java 中的 RGB 色彩空间获取灰度像素值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2499545/

相关文章:

java - 在 Java 中使用 BufferedImage 创建图像

java - ssh连接关闭后通过java在后台执行bash脚本

java使用更新查询在mysql中插入空日期

java - 尝试使用方法创建驾驶执照考试程序

python - 如何从图像中仅提取外部轮廓(OpenCV)

python - numpy 与 python : convert 3d array to 2d

java裁剪图像全黑

java - Edhesive 说我的程序未通过所有测试

mysql - (mysql) 从 digikam 4.* 迁移到 5.* 时数据库迁移困难

java - 如何从 BufferedImage 创建 8 位 PNG?