📜  使用OpenCV过滤颜色

📅  最后修改于: 2021-04-16 08:26:16             🧑  作者: Mango

颜色分割或颜色过滤在OpenCV中广泛用于识别具有特定颜色的特定对象/区域。最为广泛使用的色彩空间是RGB色彩空间,它被称为加法色彩空间,因为这三种色相加在一起可以为图像赋予色彩。要确定特定颜色的区域,请设置阈值并创建一个遮罩以分离不同的颜色。 HSV颜色空间为此目的更为有用,因为HSV空间中的颜色更加局限,因此可以轻松分离。彩色滤镜在密码学,红外分析,易腐食品的食品保存等方面有许多应用和使用案例。在这种情况下,可以使用图像处理的概念来发现或提取出特定颜色的区域。
对于颜色分割,我们所需要的只是阈值或一种颜色空间中颜色的上下限范围的知识。它在“色相饱和度值”色彩空间中效果最佳。
在指定要分割的颜色范围之后,需要相应地创建一个遮罩,并通过使用它可以将特定的关注区域分离出来。

下面是代码:

Python3
import cv2
import numpy as np
 
cap = cv2.VideoCapture(0)
 
while(1):
    _, frame = cap.read()
    # It converts the BGR color space of image to HSV color space
    hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
     
    # Threshold of blue in HSV space
    lower_blue = np.array([60, 35, 140])
    upper_blue = np.array([180, 255, 255])
 
    # preparing the mask to overlay
    mask = cv2.inRange(hsv, lower_blue, upper_blue)
     
    # The black region in the mask has the value of 0,
    # so when multiplied with original image removes all non-blue regions
    result = cv2.bitwise_and(frame, frame, mask = mask)
 
    cv2.imshow('frame', frame)
    cv2.imshow('mask', mask)
    cv2.imshow('result', result)
     
    cv2.waitKey(0)
 
cv2.destroyAllWindows()
cap.release()


原始图片-

遮罩图像

蓝色分段区域-