用java读取灰度图像的像素值,位深度为8,怎么读出的图像有偏差
File file = new File("D:/a.bmp");BufferedImage bi=ImageIO.read(file);
ColorModel cm = ColorModel.getRGBdefault();
int r,g,b,c;
c=bi.getRGB(0, 0);
r = cm.getRed(c);
g = cm.getGreen(c);
b = cm.getBlue(c);
int gray=(int)(r*0.3+g*0.59+b*0.11);
就说 第一的像素吧,用matlab和c++读出的都是64,但是用这段代码读出的却是137.
求教啊,或者怎么将灰度图像读入数组啊? --------------------编程问答-------------------- 楼主有没有对比过r/g/b值是否分别相符。 --------------------编程问答-------------------- 用 ColorModel bcm = bi.getColorModel();
和 ColorModel.getRGBDefault()的结果不一样。
同一点一个返回251,一个返回244。 --------------------编程问答-------------------- 我用这张图片测试的/upload/20131228/51882.jpg --------------------编程问答-------------------- --------------------编程问答--------------------
BufferedImage.getType()
getColorModel
要根据这个两个变量来决定灰度值的
补充:Java , Java相关