我有一个带有vec3b值的cv :: Mat文件。这些值是图像中的颜色。我想改变那张图片中的一些颜色。
我知道正常矩阵操作的setTo()函数,但是如何将它用于我的Mat文件?
我试过这样的事情:
image = image.setto(Vec3b(0,0,0), image == Vec3b(255,0,0))
THX!
答案 0 :(得分:6)
根据图片image
,我们要查找image
中等于Scalar(255,0,0)
的所有像素,然后将这些像素设置为Scalar(0,0,0)
。
首先,我们需要获取mask
,如果mask
中的相应位置等于image
,Scalar(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);