如何在java中获取图像的每个像素的灰度

如何在java中获取图像的每个像素的灰度,java,image-processing,Java,Image Processing,那里。。。 我有一些关于使用java进行图像处理的作业的问题。我的问题: 如何在java编程中获得rgb图像每个像素的灰度值 我只知道一点关于如何通过语法图像获得每个像素的rgb值。getRGB(x,y)用于返回rgb值。我不知道如何获得图像每个像素的灰度值 感谢您的帮助首先,您需要从image.getRGB(x,y)中获得的每个像素中提取红色、绿色和蓝色值。看看吧。然后阅读。您还可以设置一个类型为_BYTE _GRAY的缓冲区图像,并将图片绘制到其中,然后获取光栅数据并找到值。我同意前面的答案

那里。。。 我有一些关于使用java进行图像处理的作业的问题。我的问题: 如何在java编程中获得rgb图像每个像素的灰度值

我只知道一点关于如何通过语法图像获得每个像素的rgb值。getRGB(x,y)用于返回rgb值。我不知道如何获得图像每个像素的灰度值


感谢您的帮助

首先,您需要从
image.getRGB(x,y)
中获得的每个像素中提取红色、绿色和蓝色值。看看吧。然后阅读。

您还可以设置一个类型为_BYTE _GRAY的缓冲区图像,并将图片绘制到其中,然后获取光栅数据并找到值。

我同意前面的答案。创建与BuffereImage类似的BuffereImage=new BuffereImage(宽度、高度、BuffereImage.TYPE_BYTE_GRAY)。据我所知,光栅用于读取像素数据,而可写光栅用于写入像素数据或更新像素。我总是使用可写光栅,尽管这可能不是最好的方法,因为您可以读取像素数据并设置像素值。您可以通过writeableRaster raster=image.getRaster()获取光栅;然后可以使用raster.getSample(x,y,0)获得像素值;参数中的0表示要获得的波段,灰度图像的波段应为0。

补充了Daniel的答案:

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.
    }
}
WritableRaster wr=MyBuffereImage.getRaster();
对于(int i=0;i