1
功能參數:輸入圖像,第一顏色,第二顏色比較像素以RGB顏色
我拍攝圖像,在看它的高度和寬度,然後迭代通過找到的像素。如果像素顏色最接近第一種顏色(color1
),則將該像素顏色更改爲color1
,如果像素顏色最接近color2
,則將其更改爲color2
。試圖比較兩種參數顏色時,我認爲問題出在代碼abs(color2-color1)/2
上。
void Preprocessor(BMP pix, RGB color1, RGB color2) {
int height = pix.GetHeight();
int width = pix.GetWidth();
for (int i = 0; i < height; i++) {
for (int j = 0; j < width; j++) {
if (pix[i][j]->red + pix[i][j]->green + pix[i][j]->blue >
abs(color2 - color1)/2) { // pixel color closest to color1
pix[i][j] = color1;
pix[i][j] = color1;
pix[i][j] = color1;
} else { // pixel color closest to color2
pix[i][j] = color2;
pix[i][j] = color2;
pix[i][j] = color2;
}
}
}
}
到comapre實驗是有'運營商的實現 - (RGB,RGB)'和'operator /(RGB,int)'? – 2014-10-06 17:42:50
陳述'pix [i] [j] = color1'和'pix [i] [j] = color2'只需要執行一次,但這大多是無害的。 – 2014-10-06 17:44:28
我不認爲你可以用abs()的方式減去顏色。您還將顏色與顏色的差異進行比較。我建議看看這個答案:http://stackoverflow.com/a/9018153/1928529隨着比較描述那裏你可以得到距離pix [i] [j] <-> color1 en pix [i] [j] <-> color2 ,然後檢查哪一種顏色最接近像素。 – dennisschagt 2014-10-06 17:48:40