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

新手上路,请多包涵

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

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

原文由 fdh 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 900
2 个回答

您不会将二进制掩码应用于图像。您(可选)在处理函数调用中使用二进制掩码来告诉函数您要处理图像的哪些像素。如果我完全误解了你的问题,你应该添加更多细节来澄清。

原文由 SSteve 发布,翻译遵循 CC BY-SA 3.0 许可协议

好吧,这个问题出现在搜索结果的顶部,所以我相信我们需要这里的代码示例。这是Python代码:

 import cv2

def apply_mask(frame, mask):
    """Apply binary mask to frame, return in-place masked image."""
    return cv2.bitwise_and(frame, frame, mask=mask)

掩码和框架必须具有相同的大小,因此掩码为 1 的像素保持原样,并且在掩码像素为 0 的情况下设置为零。

而对于 C++ 它有点不同:

 cv::Mat inFrame; // Original (non-empty) image
cv::Mat mask; // Original (non-empty) mask

// ...

cv::Mat outFrame;  // Result output
inFrame.copyTo(outFrame, mask);

原文由 rudyryk 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题