繁体   English   中英

使用OpenCV Python,如何使所有黑色像素透明,然后将其覆盖在原始图像上

[英]Using OpenCV Python, How would you make all black pixels transparent, and then overlay it over original image

我正在尝试制作一个白色的彩色面具。 我的想法是:

  • 使黑色像素在面具中透明
  • 合并这两个图像
  • 裁剪图像

那么我原来的蒙​​面区域将是白色的。 我需要什么样的OpenCV python代码/方法?

像这样:

原版的

原版的

面具

面具

期望的结果(模拟 - 没有绿色边缘)

期望的结果(模拟 - 没有绿色边缘)

代替

代替

我假设你的面具是一个布尔numpy数组,你的2个图像是numpy数组image1和image2。

然后你可以使用布尔数组作为乘数。

overlay= mask*image1 + (-mask)*image2

因此,您从image1获取“True”像素,从image2获取False像素

我想做一个颜色阈值来获得面具本身。 我用Hue 43-81,饱和度39-197和亮度115-255进行第一次快速而肮脏的尝试得到的结果是: 在此输入图像描述

下一步是填充算法以填充蒙版内部。 请注意,也选择了右侧的一个小区域。

在此输入图像描述

下一步是两个结果的减法(mask-filled_mask):

在此输入图像描述

再次填充整体并摆脱二进制打开的噪声像素:

在此输入图像描述

最后用创建的蒙版掩盖图像。

在此输入图像描述

可以调整每个步骤以产生最佳结果。 一个好主意是尝试执行这些步骤(例如使用imageJ)来设置工作流程,然后编写python / openCV中的步骤脚本。

另请参阅http://fiji.sc/Segmentation

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM