首頁  >  文章  >  後端開發  >  詳細講解 Python實作對影像進行掩膜遮罩處理

詳細講解 Python實作對影像進行掩膜遮罩處理

coldplay.xixi
coldplay.xixi轉載
2020-09-14 13:13:154624瀏覽

詳細講解 Python實作對影像進行掩膜遮罩處理

相關學習推薦:python教學

# 影像遮罩(image mask):用選定的影像、圖形或物體,對待處理的影像(局部或全部)進行遮蔽來控制影像處理的區域或處理過程。由於覆蓋的特定圖像或物體稱為掩模(mask),在做圖像處理的時候,對圖像進行遮罩的需求非常多,接下來就以下面這張貓狗的圖片進行演示,我選擇的是小貓的頭像。

首先看效果圖:

詳細講解 Python實作對影像進行掩膜遮罩處理
詳細講解 Python實作對影像進行掩膜遮罩處理
詳細講解 Python實作對影像進行掩膜遮罩處理

#Python實作對影像進行遮罩遮罩處理

  • 匯入所需的庫
  • 建立遮罩影像
    • ##方形遮罩
    • #圓形遮罩
  • 遮罩與原始影像進行拼接
  • 展示影像
  • 效果展示
  • ##總結
  • 匯入所需的函式庫

這次需要的函式庫資源有

cv2

numpy,可透過pip install xxx進行下載。 <pre class="brush:php;toolbar:false">import cv2 import numpy as np复制代码</pre>創建掩膜圖像

創建掩膜具體需要看圖像的尺寸,根據圖像的尺寸所需創建自己的掩膜,當然掩膜的想也可以自己選擇。我這裡創建的掩膜有方形掩膜和圓形掩膜。

方形遮罩

遮罩座標為[10:170, 50:220]。

# 创建掩膜
mask = np.zeros([img.shape[0], img.shape[1]], dtype=np.uint8)
mask[10:170, 50:220] = 255复制代码

圓形遮罩

遮罩座標:

x = 140

y = 100
r = 80

# 创建掩膜
x = 140
y = 100
r = 80
mask = np.zeros(img.shape[:2], dtype=np.uint8)
mask = cv2.circle(mask, (x, y), r, (255, 255, 255), -1)复制代码

」遮罩與原始影像進行拼接

圖片合併用到了cv2.add,將遮罩與原始影像進行拼接合併。

image = cv2.add(img, np.zeros(np.shape(img), dtype=np.uint8), mask=mask)复制代码

展示圖像

# 展示原图
cv2.imshow("img", img)
# 展示掩膜图片
cv2.imshow("mask", mask)
# 展示添加掩膜效果图片
cv2.imshow("image", image)复制代码

效果展示

原始圖像:


詳細講解 Python實作對影像進行掩膜遮罩處理


詳細講解 Python實作對影像進行掩膜遮罩處理

方形遮罩影像:

詳細講解 Python實作對影像進行掩膜遮罩處理

#方形遮罩與原圖合併影像:

詳細講解 Python實作對影像進行掩膜遮罩處理

#圓形遮罩圖像:

詳細講解 Python實作對影像進行掩膜遮罩處理

圓形遮罩與原圖合併影像:


總結
###遮擋遮罩的原理很簡單,先建立一個和圖片同樣大小的全黑影像,再把需要顯示的區域像素改成白色,最後使用cv2.add疊加image和mask就可以實現影像的遮蔽顯示。 #########想了解更多程式設計學習,請關注###php培訓###欄位! ##########

以上是詳細講解 Python實作對影像進行掩膜遮罩處理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:juejin.im。如有侵權,請聯絡admin@php.cn刪除