如何在 OpenCV Python 中為影像新增蒙版?


我們可以透過計算蒙版和影像之間的cv2.bitwise_and()來將蒙版應用於影像。為了跟蹤顏色,我們使用cv2.inRange()在HSV顏色空間中定義蒙版,並傳遞HSV中顏色值的上下限。

另請閱讀:使用Python和OpenCV識別影像中的顏色

為了跟蹤影像的一部分,我們可以使用np.zeros()定義蒙版,並使用白色(255)對輸入影像中要檢查的區域進行切片。請按照以下步驟為影像新增蒙版:

  • 第一步是匯入所需的庫。所需的Python庫是OpenCVNumPy。確保您已經安裝了它們。

  • 接下來,使用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。

更新於:2023年8月25日

47K+ 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始
廣告