我有一个包含 vec3b 值的 cv::Mat 文件。这些值是来自图像的颜色。我想更改该图像中的一些颜色。
我知道用于正常矩阵操作的 setTo() 函数,但如何将它用于我的 Mat 文件?
我试过这样的:
image = image.setto(Vec3b(0,0,0), image == Vec3b(255,0,0))
谢谢!
最佳答案
给定一张图片 image
,我们想要找到 image
中等于 Scalar(255,0,0)
的所有像素然后将这些像素设置为 Scalar(0,0,0)
。
首先我们需要获取
mask
,这样在mask
中的某个位置设置为255,如果在image
中对应的位置等于Scalar(255,0,0)
,否则设置为 0。这可以通过inRange()
实现功能。Mat mask; inRange(image, Scalar(255,0,0), Scalar(255,0,0), mask);
现在将
setTo()
函数应用于image
。image.setTo(Scalar(0,0,0), mask);
关于C++ |使用 setTo 更改 cv::mat 中的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20981379/