簡體   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