C ++ |使用setTo更改cv :: mat中的颜色

时间:2014-01-07 20:37:20

标签: c++ opencv

我有一个带有vec3b值的cv :: Mat文件。这些值是图像中的颜色。我想改变那张图片中的一些颜色。

我知道正常矩阵操作的setTo()函数,但是如何将它用于我的Mat文件?

我试过这样的事情:

 image = image.setto(Vec3b(0,0,0), image == Vec3b(255,0,0))

THX!

1 个答案:

答案 0 :(得分:6)

根据图片image,我们要查找image中等于Scalar(255,0,0)的所有像素,然后将这些像素设置为Scalar(0,0,0)

  • 首先,我们需要获取mask,如果mask中的相应位置等于imageScalar(255,0,0)中的位置设置为255,否则设置为0.这可以通过inRange()函数实现。

    Mat mask;
    inRange(image, Scalar(255,0,0), Scalar(255,0,0), mask);
    
  • 现在将setTo()函数应用于image

    image.setTo(Scalar(0,0,0), mask);