我想将二进制蒙版应用于彩色图像。 请提供一个基本的代码示例,并正确解释代码的工作原理。
另外,是否有一些选项可以永久应用掩码,以便所有功能仅在掩码内运行?
最佳答案
虽然@perrejba 的回答是正确的,但它使用了遗留的 C 风格函数。由于问题标记为 C++,您可能希望使用一种方法:
inputMat.copyTo(outputMat, maskMat);
所有对象的类型都是 cv::Mat
。
请注意,屏蔽是二进制的。掩码中的任何非零值都被解释为“复制”。即使蒙版是灰度图像。
还要注意 .copyTo() 函数在复制之前不会清除输出。
如果您想永久更改原始图像,则必须进行额外的复制/克隆/分配。没有为重叠的输入/输出图像定义 copyTo() 函数。所以你不能使用相同的图像作为输入和输出。
关于c++ - 如何在 OpenCV 中对图像应用蒙版?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7479265/