對C++來說相當新穎,我一直在使用OpenCV庫。我正在嘗試爲圖像查看器創建調光功能。這是void dim(int val)
的主體。使用OpenCV修改圖像時出現錯誤的RGB值
我的每一個像素上循環,舒筋Vec3b內的像素的RGB值的參考,然後通過一些變化的因素減少他們,從val/255
(其中0 <= val <= 255
計算,但由於某些原因,pix[0]
等都是被
val
值的圖像變爲黑色
可能會做一些與浮點這裏,或誤解的OpenCV的某些方面稍微愚蠢的。
for(int x = 0; x < rows; x++) {
for(int y = 0; y < cols; y++) {
Vec3b &pix = dst.at<Vec3b>(x,y);
float change = val/255.0f;
pix[0] = (uchar)(pix[0] * change);
pix[1] = (uchar)(pix[1] * change);
pix[2] = (uchar)(pix[2] * change);
}
}
在此先感謝!
我測試你的代碼,它工作正常!不要將'val'設置得太小,否則結果'dst'會變成全黑。 – WangYudong
你可以做'dst * = val/255.0f'。此外,它看起來像你有你的指數錯誤。你應該有'x
在這個速記上歡呼聲。我不明白指數是如何錯誤的,但當前的配置工作正常,如果我切換變量,它只會使圖像的一部分變暗。 –