对 C++ 相当陌生,我一直在使用 OpenCV 库。我正在尝试为图像查看器创建调光功能。这是 的主体void dim(int val)
。
我循环遍历每个像素,获取对 Vec3b 中像素的 RGB 值的引用,然后将它们减少一些变化因子,从val / 255
(where 0 <= val <= 255
. 但由于某种原因pix[0]
等都被设置为 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);
}
}
提前致谢!