RGB2HSV提取颜色

这几日忙机器鱼比赛的项目,在颜色识别方面有些迷茫,查阅很多博文后发现一篇很棒的。
这个博文详细的描写了hsv的原理以及使用
计算机视觉 OpenCV【六:应用之颜色检测】

对他的代码做出修改后

'''
#Author :susocool
#Creattime:2023/11/18
#FileName:rgb2hsv
#Description:
图片的rgb转换成hsv,定义蒙版,定义上下限,颜色检测,得到二值图像,并输出至蒙版
转换为实时跟踪检测,可调模式。
创建跟踪栏窗口,创建跟踪栏。
蒙版后得到提取颜色的图像
'''
import cv2
import numpy as np

def trackbar_callback(x) :
    pass

# 创建Trackbar窗口和Trackbar
def create_trackbars() :
    cv2.namedWindow ( "Trackbars" )
    cv2.createTrackbar ( "Hue Min", "Trackbars", 0, 179, trackbar_callback )
    cv2.createTrackbar ( "Hue Max", "Trackbars", 179, 179, trackbar_callback )
    cv2.createTrackbar ( "Sat Min", "Trackbars", 0, 255, trackbar_callback )
    cv2.createTrackbar ( "Sat Max", "Trackbars", 255, 255, trackbar_callback )
    cv2.createTrackbar ( "Val Min", "Trackbars", 0, 255, trackbar_callback )
    cv2.createTrackbar ( "Val Max", "Trackbars", 255, 255, trackbar_callback )


def main() :
    image = cv2.imread ('hsv.png')

    # 将RGB图片转换为HSV
    hsv_image = cv2.cvtColor( image, cv2.COLOR_BGR2HSV )

    # 创建蒙版
    mask = np.zeros ( image.shape[:2], dtype=np.uint8 )

    while True :
        # 获取Trackbar上下限值
        hue_min = cv2.getTrackbarPos ( "Hue Min", "Trackbars" )
        hue_max = cv2.getTrackbarPos ( "Hue Max", "Trackbars" )
        sat_min = cv2.getTrackbarPos ( "Sat Min", "Trackbars" )
        sat_max = cv2.getTrackbarPos ( "Sat Max", "Trackbars" )
        value_min = cv2.getTrackbarPos ( "Val Min", "Trackbars" )
        value_max = cv2.getTrackbarPos ( "Val Max", "Trackbars" )

        # 创建上下限数组
        lower_limit = np.array ( [hue_min, sat_min, value_min] )
        upper_limit = np.array ( [hue_max, sat_max, value_max] )

        # 根据上下限值对颜色进行检测
        color_mask = cv2.inRange ( hsv_image, lower_limit, upper_limit )

        # 将检测到的颜色通过蒙版输出
        masked_image = cv2.bitwise_and ( image, image, mask=color_mask )

        # 原图 二值化图 蒙版处理后的图
        cv2.imshow ( "Original Image", image )
        cv2.imshow ( "Color Mask", color_mask )
        cv2.imshow ( "Masked Image", masked_image )

        # 按下ESC键退出程序
        if cv2.waitKey(1) ==27:
            break

    # 关闭窗口
    cv2.destroyAllWindows ()


if __name__ == '__main__' :
    create_trackbars ()
    main ()

下面是我用来实验的图像,本来想加入演示的视频的,但是csdn不允许我上传视频QAQ
//好的现在允许了

提取红色

真的很丝滑的提取颜色,也可以特别直观的看到hsv的变化,比看那个表格人性化!!!!
在这里插入图片描述
折磨我多日的表格,也顺便发出来吧。
在这里插入图片描述

最终提取红色的效果图
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值