如何在 OpenCV Python 中為影像新增蒙版?
我們可以透過計算蒙版和影像之間的cv2.bitwise_and()來將蒙版應用於影像。為了跟蹤顏色,我們使用cv2.inRange()在HSV顏色空間中定義蒙版,並傳遞HSV中顏色值的上下限。
為了跟蹤影像的一部分,我們可以使用np.zeros()定義蒙版,並使用白色(255)對輸入影像中要檢查的區域進行切片。請按照以下步驟為影像新增蒙版:
接下來,使用cv2.imread()方法讀取輸入影像。將影像從BGR轉換為HSV以跟蹤輸入影像中的顏色。要跟蹤影像的一部分,請將影像保留在BGR格式。
使用cv2.inRange()定義蒙版以跟蹤影像中的特定顏色。傳遞HSV格式的顏色上下限。如果要跟蹤輸入影像的矩形部分,請使用cv2.zeros()定義矩形影像(蒙版)。用255填充蒙版的條目以跟蹤原始影像中的區域。
使用cv2.bitwise_and()對蒙版和輸入影像應用按位與運算。
現在顯示蒙版和蒙版影像。
我們將在以下示例中使用此影像作為輸入檔案:
示例
在這個Python程式中,我們建立一個顏色蒙版來跟蹤輸入影像中的黃色。在這個示例中,我們使用HSV顏色空間來獲取顏色蒙版。
# import required libraries import cv2 import numpy as np # read input image img = cv2.imread('car.jpg') # Convert BGR to HSV hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) # define range of blue color in HSV lower_yellow = np.array([15,50,180]) upper_yellow = np.array([40,255,255]) # Create a mask. Threshold the HSV image to get only yellow colors mask = cv2.inRange(hsv, lower_yellow, upper_yellow) # Bitwise-AND mask and original image result = cv2.bitwise_and(img,img, mask= mask) # display the mask and masked image cv2.imshow('Mask',mask) cv2.waitKey(0) cv2.imshow('Masked Image',result) cv2.waitKey(0) cv2.destroyAllWindows()
輸出
當我們執行上述程式碼時,將開啟兩個名為“蒙版”和“蒙版影像”的視窗。“蒙版”顯示跟蹤黃色的蒙版。“蒙版影像”顯示輸入影像中跟蹤的黃色。
示例
在這個Python程式中,我們建立一個矩形區域作為蒙版。我們想要跟蹤輸入影像的這個矩形部分。
# import required libraries import cv2 import numpy as np # Read an input image as a gray image img = cv2.imread('car.jpg') # create a mask mask = np.zeros(img.shape[:2], np.uint8) mask[100:250, 150:450] = 255 # compute the bitwise AND using the mask masked_img = cv2.bitwise_and(img,img,mask = mask) # display the mask, and the output image cv2.imshow('Mask',mask) cv2.waitKey(0) cv2.imshow('Masked Image',masked_img) cv2.waitKey(0) cv2.destroyAllWindows()
輸出
當我們執行上述程式碼時,將開啟兩個名為“蒙版”和“蒙版影像”的視窗。“蒙版”顯示蒙版(矩形區域)。“蒙版影像”顯示輸入影像中跟蹤的部分。
透過我們的Python 教程學習 Python。
廣告