其實我正在做一些圖像處理項目,並且遇到了某個地方。我不得不彩色圖像轉換爲灰度並且爲此我已經提取的值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