【问题标题】:Java: represent a color image as an array of gray scale intensity valuesJava:将彩色图像表示为灰度强度值数组
【发布时间】:2015-04-20 11:07:27
【问题描述】:

是否有内置工具可以将颜色(或灰度图像)表示为灰度强度值数组?

如果没有,假设我有一个BufferedImage img,我如何将这个图像表示为这样的数组:

int[][] intensity = toIntensity(img);

toIntensity() 方法应该是什么样子的?

【问题讨论】:

    标签: java image image-processing grayscale


    【解决方案1】:

    有一种方法可以在不执行 toIntensity() 的情况下做到这一点:

    public static BufferedImage convertToType(BufferedImage sourceImage, int targetType) {
            BufferedImage image;
            if (sourceImage.getType() == targetType) {
                image = sourceImage;
            }else {
                image = new BufferedImage(sourceImage.getWidth(), sourceImage.getHeight(), targetType);
                image.getGraphics().drawImage(sourceImage, 0, 0, null);
            }
            return image;
        }
    

    使用 targetType 调用此方法为:BufferedImage.TYPE_BYTE_GRAY 如果您需要其他类型,则可以将其转换回来,它会保留其灰色。

    【讨论】:

      【解决方案2】:

      toIntensity 方法可能是这样的

      public int[][] toIntensity(BufferedImage img){
              int[][] cols = new int[img.getWidth()][img.getHeight()];
                  for(int z = 0;z < img.getWidth();z++){
                      for(int a = 0;a < img.getHeight();a++){
                          int color = img.getRGB(z, a);
                          cols[z][a] = color;
                      }
                  }
                  return cols;
              }
      

      【讨论】:

      • 如果图片是彩色图片怎么办?
      猜你喜欢
      • 2015-05-28
      • 2011-12-28
      • 1970-01-01
      • 1970-01-01
      • 2021-10-06
      • 2015-11-20
      • 2013-07-28
      • 2016-01-11
      相关资源
      最近更新 更多