指定的颜色范围过滤出特定颜色的区域

简介: 指定的颜色范围过滤出特定颜色的区域

filter_img 的作用是从视频帧(或图像)中根据指定的颜色范围过滤出特定颜色的区域。以下是该方法的详细步骤和解释:

  1. 输入参数

    • self:表示类的实例,通常在类的其他方法中使用。
    • frame:输入的视频帧(或图像),是一个像素值的二维数组。
    • color:可以是指定颜色范围的列表,或者是某种特定的颜色值。
  2. 颜色空间转换

    • b,g,r = cv2.split(frame):将输入的 BGR 格式的图像 frame 分割为独立的蓝色、绿色和红色通道。
    • frame_bgr = cv2.merge((r,g,b)):将分割后的 RGB 通道重新合并,因为 OpenCV 的许多颜色空间转换函数期望输入格式为 BGR。
  3. 颜色空间从 BGR 转换到 HSV

    • hsv = cv2.cvtColor(frame_bgr, cv2.COLOR_BGR2HSV):将图像的颜色空间从 BGR 转换为 HSV。HSV 颜色空间对颜色的变化更加敏感,适合用于颜色过滤。
  4. 定义颜色范围

    • 如果 color 是一个列表,它应该包含两个元素:color[0] 是颜色的下限,color[1] 是颜色的上限。
    • 如果 color 不是一个列表,那么它应该是一个特定的颜色值,此时方法 get_color_mask(color) 被用来自动确定该颜色的上限和下限。这个 get_color_mask 方法没有在代码中给出,可能是一个自定义函数,用于根据输入的颜色值生成对应的颜色掩码。
  5. 创建颜色掩码

    • mask = cv2.inRange(hsv, color_lower, color_upper):使用 color_lowercolor_upper 定义的颜色范围,在 HSV 颜色空间中创建一个掩码。这个掩码将图像中不属于指定颜色范围的像素设置为 0,属于指定颜色范围的像素设置为 255。
  6. 应用掩码并返回结果

    • img_mask = cv2.bitwise_and(frame, frame, mask=mask):使用 bitwise_and 函数将原始图像 frame 与掩码 mask 进行按位与操作,结果是一个只包含指定颜色范围的图像 img_mask
  7. 返回值

    • 方法返回 img_mask,这是一个过滤后的图像,其中只有指定颜色范围内的像素可见,其他像素被设置为黑色。

使用场景:

这个方法可以用于各种需要颜色过滤的场景,比如在交通监控中过滤出特定颜色的车辆,在农业自动化中过滤出成熟的果实等。通过调整 color 参数,可以针对不同的颜色进行过滤。


    def filter_img(self,frame,color):
        b,g,r = cv2.split(frame)
        frame_bgr = cv2.merge((r,g,b))
        hsv = cv2.cvtColor(frame_bgr, cv2.COLOR_BGR2HSV)
        if isinstance(color, list):
            color_lower = np.array(color[0])
            color_upper = np.array(color[1])
        else:
            color_upper, color_lower = get_color_mask(color)
        mask = cv2.inRange(hsv, color_lower, color_upper)
        img_mask = cv2.bitwise_and(frame, frame, mask=mask)
        return img_mask
目录
相关文章
|
3月前
设置背景图像平铺和位置
设置背景图像平铺和位置。
38 5
|
5月前
|
计算机视觉 Python
颜色过滤
【7月更文挑战第28天】颜色过滤。
32 1
|
7月前
根据内容显示左右带固定宽度边距和背景的标签
根据内容显示左右带固定宽度边距和背景的标签
40 0
Echarts去掉叠堆折线区域图的区域颜色
Echarts去掉叠堆折线区域图的区域颜色
135 0
echarts折线图线条颜色和区域颜色设置
echarts折线图线条颜色和区域颜色设置
241 0
|
数据可视化
ggforce|绘制区域轮廓-区域放大-寻找你的“onepiece”
ggforce|绘制区域轮廓-区域放大-寻找你的“onepiece”
输出框的背景和字体颜色改变
输出框的背景和字体颜色改变
109 0
输出框的背景和字体颜色改变
颜色的多种表示方式和应用
颜色的多种表示方式和应用
166 0
146.矩形区域的颜色填充
146.矩形区域的颜色填充
81 0