OpenCv copyTo()不起作用

时间:2015-09-02 11:07:57

标签: c++ opencv

我想使用openCv的copyTo()函数对图像应用蒙版,但是屏蔽不起作用。我仍然获得相同的图像。

当我搜索网页时,我看到了一些建议:

- 源图像和目标图像必须不同,  -source图像的类型必须为CV_8U,  -mask图像必须具有类型CV_8U等

我尝试了所有这些,但我无法解决问题。此外,在官方的OpenCv网站上,没有提到这样的限制。

以下是我的代码的一部分:

Mat source; //initialized in some way
Mat mask; // this is also initialized in some way

source.copyTo(source, mask);

1 个答案:

答案 0 :(得分:2)

您的面具应为单通道图片,其值为0255

Mat mask(source.rows, source.cols, CV_8UC1, Scalar(0));

使用上面的蒙版图像,您应该在目标中获得一个空白图像,因为所有蒙版值都为零。

使用以下蒙版,您应该能够获得与源图像相同的目标图像,因为整个蒙版图像已使用值255激活。

Mat mask(source.rows, source.cols, CV_8UC1, Scalar(255));

对于其他只有少数图像区域包含白色像素的遮罩,您将在目标图像中获得源图像的那些区域。