使用Python,OpenCV制作图像Mask——截取ROIs及构建透明的叠加层
生活随笔
收集整理的這篇文章主要介紹了
使用Python,OpenCV制作图像Mask——截取ROIs及构建透明的叠加层
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
使用Python,OpenCV制作圖像Mask——截取ROIs及構(gòu)建透明的疊加層
- 1. 效果圖
- 2. 源碼
- 參考
這篇博客將介紹如何使用OpenCV制作Mask圖像掩碼。使用位運算和圖像掩碼允許我們只關(guān)注圖像中感興趣的部分,截取出任意區(qū)域的ROIs。
應(yīng)用:
- 圖像感興趣區(qū)域的截取;
- 圖像融合:構(gòu)建透明的疊加層;
1. 效果圖
原始圖如下:(老九門穎寶&佛爺~)
矩形掩碼 VS 效果圖如下:(使用矩形掩碼,只提取圖像中包含人物的區(qū)域,而忽略其他區(qū)域)
圓形掩碼 VS 效果圖如下:(圓形掩模顯示在左邊,掩模的應(yīng)用在右邊。實質(zhì)上可以使用任意形狀的掩碼圖像,如矩形、圓、線、多邊形等從圖像中提取區(qū)域)
2. 源碼
# 分別使用矩形和圓形遮罩從圖像中提取身體和臉部。
# USAGE
# python opencv_masking.pyimport argparseimport cv2
# 導(dǎo)入必要的包
import numpy as np# 構(gòu)建命令行參數(shù)及解析
# --image 輸入圖像路徑
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", type=str, default="yc.jpg",help="path to the input image")
args = vars(ap.parse_args())# 加載原始輸入圖像,并展示
image = cv2.imread(args["image"])
cv2.imshow("Original", image)# 掩碼和原始圖像具有相同的大小,但是只有倆種像素值:0(背景忽略)、255(前景保留)
mask = np.zeros(image.shape[:2], dtype="uint8")
cv2.rectangle(mask, (30, 90), (280, 440), 255, -1)
cv2.imshow("Rectangular Mask", mask)# 應(yīng)用掩碼圖像
masked = cv2.bitwise_and(image, image, mask=mask)
cv2.imshow("Rectangular Mask Applied to Image", masked)
cv2.waitKey(0)# 構(gòu)造一個圓形掩碼(半徑為140px,并應(yīng)用位運算)
mask = np.zeros(image.shape[:2], dtype="uint8")
cv2.circle(mask, (155, 200), 140, 255, -1)
masked = cv2.bitwise_and(image, image, mask=mask)# 展示輸出圖像
cv2.imshow("Circular Mask", mask)
cv2.imshow("Circular Mask Applied to Image", masked)
cv2.waitKey(0)
參考
- https://www.pyimagesearch.com/2021/01/19/image-masking-with-opencv/
總結(jié)
以上是生活随笔為你收集整理的使用Python,OpenCV制作图像Mask——截取ROIs及构建透明的叠加层的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 80年猴票是谁画的呢?
- 下一篇: 使用Python,OpenCV转换颜色空