我想使用 openCv 的 copyTo() 函数对图像应用蒙版,但蒙版不起作用。我仍然获得相同的图像。
当我在网上搜索时,我看到了一些建议,例如:
-源图像和目标图像必须不同, -源图像必须具有 CV_8U 类型, -掩码图像必须具有 CV_8U 等类型。
我尝试了所有方法,但无法解决问题。此外,在 OpenCv 官方网站上,没有提及此类限制。
这是我的部分代码:
Mat source; //initialized in some way
Mat mask; // this is also initialized in some way
source.copyTo(source, mask);
最佳答案
您的蒙版应该是单 channel 图像,其值为 0
或 255
。
Mat mask(source.rows, source.cols, CV_8UC1, Scalar(0));
使用上面的掩码图像,您应该在目标中得到一个空白图像,因为所有掩码值都是零。
并且使用以下 mask ,您应该能够获得与源图像相同的目标图像,因为您的整个 mask 图像都被值 255
激活。
Mat mask(source.rows, source.cols, CV_8UC1, Scalar(255));
对于一些只有少数图像区域包含白色像素的其他蒙版,您将在目标图像中获得源图像的那个区域。
关于c++ - OpenCv copyTo() 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32351494/