使用 OpenCV Python,如何使所有黑色像素透明,然后将其覆盖在原始图像上
Using OpenCV Python, How would you make all black pixels transparent, and then overlay it over original image
我正在尝试制作彩色面具,白色。
我的想法是:
- 使蒙版中的黑色像素透明
- 合并两张图片
- 剪裁图片
那么我原来的遮罩区域将是白色的。
我需要什么样的 OpenCV python code/methods?
像这样:
原创
面具
期望的结果(模拟 - 没有绿色边缘)
而不是
我假设你的掩码是一个布尔 numpy 数组,你的 2 个图像是 numpy 数组 image1 和 image2。
然后你可以使用布尔数组作为乘数。
overlay= mask*image1 + (-mask)*image2
所以你得到了 image1 的 "True" 像素和 image2 的错误像素
我想做一个颜色阈值来获得蒙版本身。
我在色相 43-81、饱和度 39-197 和亮度 115-255 的第一次快速而肮脏的尝试中得到的结果是:
下一步是整个填充算法来填充掩码内部。请注意,右侧的一小块区域也被选中。
下一步是两个结果相减(mask-filled_mask):
再次填充整体并用二元开运算去除噪声像素:
最后用创建的蒙版蒙版图像。
可以调整每个步骤以产生最佳结果。一个好主意是尝试这些步骤(例如使用 imageJ)来设置您的工作流程,然后在 python/openCV.
中编写步骤脚本
我正在尝试制作彩色面具,白色。 我的想法是:
- 使蒙版中的黑色像素透明
- 合并两张图片
- 剪裁图片
那么我原来的遮罩区域将是白色的。 我需要什么样的 OpenCV python code/methods?
像这样:
原创
面具
期望的结果(模拟 - 没有绿色边缘)
而不是
我假设你的掩码是一个布尔 numpy 数组,你的 2 个图像是 numpy 数组 image1 和 image2。
然后你可以使用布尔数组作为乘数。
overlay= mask*image1 + (-mask)*image2
所以你得到了 image1 的 "True" 像素和 image2 的错误像素
我想做一个颜色阈值来获得蒙版本身。
我在色相 43-81、饱和度 39-197 和亮度 115-255 的第一次快速而肮脏的尝试中得到的结果是:
下一步是整个填充算法来填充掩码内部。请注意,右侧的一小块区域也被选中。
下一步是两个结果相减(mask-filled_mask):
再次填充整体并用二元开运算去除噪声像素:
最后用创建的蒙版蒙版图像。
可以调整每个步骤以产生最佳结果。一个好主意是尝试这些步骤(例如使用 imageJ)来设置您的工作流程,然后在 python/openCV.
中编写步骤脚本