...有 我对使用java进行图像处理的作业有些疑问。我的问题 : 如何在java编程中获取rgb图像的每个像素的灰度值?
我只知道如何通过语法image.getRGB(x,y)获得每个像素的rgb值,以获得返回rgb值。我不知道要获得图像的每个像素的灰度值......
感谢您提前
答案 0 :(得分:1)
首先,您需要从image.getRGB(x, y)
获得的每个像素中提取红色,绿色和蓝色值。请参阅this answer。然后阅读converting color to grayscale。
答案 1 :(得分:1)
我同意之前的回答。创建BufferedImage,如BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_BYTE_GRAY)。根据我的理解,光栅用于读取像素数据,而可写光栅用于写入像素数据或更新像素。我总是使用可写光栅,虽然这可能不是最好的方法,因为你可以读取像素数据和设置像素值。您可以通过WritableRaster获取栅格raster = image.getRaster();然后,您可以使用raster.getSample(x,y,0)获取像素的值;参数中的0表示您想要获得的色带,灰度图像应为0。
答案 2 :(得分:0)
您还可以设置TYPE_BYTE_GRAY类型的BufferedImage,并将图片绘制到其中,然后获取栅格数据并找到值。
答案 3 :(得分:0)
补充丹尼尔的回答:
WritableRaster wr = myBufferedImage.getRaster();
for(int i = 0; i < myBufferedImage.getWidth(); i++){
for(int j = 0; j < myBufferedImage.getHeight(); j++){
int grayLevelPixel = wr.getSample(i, j, 0);
wr.setSample(i, j, 0, grayLevelPixel); // Setting same gray level, will do nothing on the image, just to show how.
}
}