当前位置:编程学习 > JAVA >>

用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相关
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,