其实我正在做一些图像处理项目,并且遇到了某个地方。我不得不彩色图像转换为灰度并且为此我已经提取的值RED,GREEN,BLUE的像素的使用GETRGB()
Ñ现在我想设置该像素的RGB值部件等于其RGB组件的平均值。 RGB组件分别存储在INT变量中,因此您是否可以帮助我将此组件的平均值设置为原始像素值? 代码的部分是:如何设置特定值到Java中的任何像素?
rgbArray=new int[w*h];
buffer.getRGB(0, 0, width, height, rgbArray , 0,width);
int a,r,g,b;
for(int i = 0 ; i<w*h; i++)
{
r = (0x00ff0000 & rgbArray[i]) >> 16;
g = (0x0000ff00 & rgbArray[i]) >> 8;
b = (0x000000ff & rgbArray[i]);
rgbArray[i] = (r+g+b)/3;
}
buffer.setRGB(0, 0, width, height, rgbArray , 0,width);
,但是这不是给我一个灰度图像。你能告诉我我犯了什么错误吗?
你能不能给我们更多的上下文?更多的上下文?例如,您尝试添加此功能的结构代码会很好。 – 2012-02-02 17:56:08
既然你标记了这个灰度图,这里有一句话:人眼对红色,绿色和蓝色不是同样敏感,所以平均三个分量不会给你一个合适的灰度图像。 – lhballoti 2012-02-02 18:01:38
是的..当然..我有编辑我的问题.. – Arizvi 2012-02-02 18:25:46