如何在 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+ 次浏览

启动您的职业生涯

完成课程获得认证

开始
广告