c++ - 如何在 OpenCV 中对图像应用蒙版?

标签 c++ image image-processing opencv mask

我想将二进制蒙版应用于彩色图像。 请提供一个基本的代码示例,并正确解释代码的工作原理。

另外,是否有一些选项可以永久应用掩码,以便所有功能仅在掩码内运行?

最佳答案

虽然@perrejba 的回答是正确的,但它使用了遗留的 C 风格函数。由于问题标记为 C++,您可能希望使用一种方法:

inputMat.copyTo(outputMat, maskMat);

所有对象的类型都是 cv::Mat

请注意,屏蔽是二进制的。掩码中的任何非零值都被解释为“复制”。即使蒙版是灰度图像。

还要注意 .copyTo() 函数在复制之前不会清除输出。

如果您想永久更改原始图像,则必须进行额外的复制/克隆/分配。没有为重叠的输入/输出图像定义 copyTo() 函数。所以你不能使用相同的图像作为输入和输出。

关于c++ - 如何在 OpenCV 中对图像应用蒙版?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7479265/

相关文章:

c++ - 我能保证 sizeof(type) == sizeof(unsigned type) 吗?

c++ - 为什么remove_reference 对函数不起作用?

c++ - Gecode,使用 gecode.int.hh 编译程序时出错

java - 将 java.awt.Image 对象转换为字节数组 (`byte[]` )

java - 48 位 TIFF 格式

html - 如何在 HTML 中显示 Base64 图像

javascript - 附加图像并通过 json 以 base64 编码发送

matlab - Matlab中级联训练 "trainCascadeObjectDetector"错误

python - 从盒装表单字段图像中提取手写字符

c# - 在 C# 中,如何在不使用空格填充的情况下对上传的照片进行平方?