我正在尝试将一些像素的新颜色值设置为cv :: Mat图像,其代码如下:
Mat image = img;
for(int y=0;y<img.rows;y++)
{
for(int x=0;x<img.cols;x++)
{
Vec3b color = image.at<Vec3b>(Point(x,y));
if(color[0] > 150 && color[1] > 150 && color[2] > 150)
{
color[0] = 0;
color[1] = 0;
color[2] = 0;
cout << "Pixel >200 :" << x << "," << y << endl;
}
else
{
color.val[0] = 255;
color.val[1] = 255;
color.val[2] = 255;
}
}
imwrite("../images/imgopti"+to_string(i)+".tiff",image);
似乎在输出中(带有cout)获得了良好的像素,但是在输出图像中(具有imwrite),相关像素没有被修改。我已经尝试过使用color.val [0] ..我仍然不知道为什么输出图像中的像素颜色不会改变。谢谢
除了将新的像素值复制回图像之外,您已进行了所有操作。
此行将像素的副本复制到局部变量中:
仅使用参考:
出于性能原因,我不会使用.at。