我正在尝试读取 .png 灰度图像并将灰度值转换为 double[][]数组。我需要将它们映射到 0 到 1 之间的值。
我使用 BufferedImage,并且尝试找出使用的颜色深度,img.getColorModel().getColorSpace().getType()但返回了 TYPE_5CLR 或 TYPE_6CLR 通用组件颜色空间,这没有帮助。
目前我正在读取这样的值:
BufferedImage img = null;
try {
img = ImageIO.read(new File(path));
} catch (IOException e) {
return null;
}
double[][] heightmap= new double[img.getWidth()][img.getHeight()];
WritableRaster raster = img.getRaster();
for(int i=0;i<heightmap.length;i++)
{
for(int j=0;j<heightmap[0].length;j++)
{
heightmap[i][j]=((double) raster.getSample(i,j,0))/65535.0;
}
}
如果 65535 是 8 位的话,它应该是 256,但我不知道什么时候。
蝴蝶刀刀
互换的青春
相关分类