【问题标题】:How to get gray level each pixel of the image in java如何在java中获取图像的每个像素的灰度
【发布时间】:2011-04-21 19:19:12
【问题描述】:

那里... 我对使用 java 进行图像处理的作业有一些疑问。我的问题 : java编程中如何获取rgb图像每个像素的灰度值???

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

感谢提前

【问题讨论】:

    标签: java image-processing


    【解决方案1】:

    首先,您需要从image.getRGB(x, y) 获得的每个像素中提取红色、绿色和蓝色值。请参阅this answer。然后阅读converting color to grayscale

    【讨论】:

      【解决方案2】:

      我同意前面的回答。创建 BufferedImage,如 BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_GRAY)。据我了解,光栅用于读取像素数据,而可写光栅用于写入像素数据或更新像素。我总是使用可写光栅,尽管这可能不是最好的方法,因为您可以读取像素数据并设置像素值。您可以通过 WritableRaster raster = image.getRaster();然后,您可以使用 raster.getSample(x, y, 0); 获取像素的值参数中的 0 是您想要获得的波段,对于灰度图像应该是 0。

      【讨论】:

        【解决方案3】:

        你也可以设置一个TYPE_BYTE_GRAY类型的BufferedImage,然后在里面绘制图片,然后获取光栅数据并找到值。

        【讨论】:

          【解决方案4】:

          补充丹尼尔的回答:

          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.
              }
          }
          

          【讨论】:

            猜你喜欢
            • 2012-04-24
            • 2023-03-07
            • 2015-06-08
            • 1970-01-01
            • 2017-11-17
            • 1970-01-01
            • 2015-08-31
            • 1970-01-01
            • 2015-10-26
            相关资源
            最近更新 更多