【发布时间】:2015-04-20 11:07:27
【问题描述】:
是否有内置工具可以将颜色(或灰度图像)表示为灰度强度值数组?
如果没有,假设我有一个BufferedImage img,我如何将这个图像表示为这样的数组:
int[][] intensity = toIntensity(img);
toIntensity() 方法应该是什么样子的?
【问题讨论】:
标签: java image image-processing grayscale
是否有内置工具可以将颜色(或灰度图像)表示为灰度强度值数组?
如果没有,假设我有一个BufferedImage img,我如何将这个图像表示为这样的数组:
int[][] intensity = toIntensity(img);
toIntensity() 方法应该是什么样子的?
【问题讨论】:
标签: java image image-processing grayscale
有一种方法可以在不执行 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
如果您需要其他类型,则可以将其转换回来,它会保留其灰色。
【讨论】:
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;
}
【讨论】: