如何在 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。
广告