除了将新的像素值复制回图像之外,您已进行了所有操作。
这行将像素的副本复制到局部变量中:
Vec3b color = image.at<Vec3b>(Point(x,y));
因此,根据需要更改color
后,只需将其设置为如下所示:
image.at<Vec3b>(Point(x,y)) = color;
因此,完全是这样的:
Mat image = img;
for(int y=0;y<img.rows;y++)
{
for(int x=0;x<img.cols;x++)
{
// get pixel
Vec3b & color = image.at<Vec3b>(y,x);
// ... do something to the color ....
color[0] = 13;
color[1] = 13;
color[2] = 13;
// set pixel
//image.at<Vec3b>(Point(x,y)) = color;
//if you copy value
}
}
0
我正在尝试将一些像素的新颜色值设置为cv :: Mat图像,我的代码如下:
似乎在输出中(具有cout)获得了良好的像素,但是在输出图像中(具有imwrite),相关像素没有被修改。我已经尝试过使用color.val [0] ..我仍然不知道为什么输出图像中的像素颜色不会改变。谢谢