OpenCV基础HSV颜色空间*args与**kwargs滑动条传参问题

目录

  • 一、基础理论
    • 1、Hue(色相)
    • 2、Value(明度)
    • 3、Saturation(饱和度)
  • 二、hsv三通道及单通道效果
    • 三、*args && **kwargs
      • 四、滚动条控制h、s、v(min && max)
        • 1、创建滚动条
        • 2、回调函数 -- 阈值设置
        • 3、回调函数 -- 感兴趣值
      • 参考资料

        一、基础理论 HSV:HSV是一种为了加快调色效率,且易于理解的概念。
        Hue:色相(具体的颜色)
        Saturation:饱和度、色彩纯净度
        Value:明度

        1、Hue(色相)
        Hue:色相(具体的颜色)
        OpenCV基础HSV颜色空间*args与**kwargs滑动条传参问题
        文章图片


        2、Value(明度)
        【OpenCV基础HSV颜色空间*args与**kwargs滑动条传参问题】明度:色彩的明亮程度,单通道亮度(并不等同于整体发光量)。
        (明度越高越白,越低越黑,一般提高明度会同时提高R、G、B三通道的数值)

        3、Saturation(饱和度)
        Saturation:饱和度、色彩纯度。(越低越灰,越高越纯)
        (一般调高饱和度会降低RGB中相对较低的数值,凸显主要颜色的纯度。 )
        OpenCV基础HSV颜色空间*args与**kwargs滑动条传参问题
        文章图片

        B站视频讲解:

        短动画慢语速1分钟讲清影视调色中色彩形成原理基础——RGB与HSV

        二、hsv三通道及单通道效果 OpenCV基础HSV颜色空间*args与**kwargs滑动条传参问题
        文章图片

        OpenCV基础HSV颜色空间*args与**kwargs滑动条传参问题
        文章图片

        OpenCV基础HSV颜色空间*args与**kwargs滑动条传参问题
        文章图片


        三、*args && **kwargs *args:传入参数未知,且不需要知道参数名称。
        OpenCV基础HSV颜色空间*args与**kwargs滑动条传参问题
        文章图片

        **args:传入参数未知,但需要知道参数名称。
        OpenCV基础HSV颜色空间*args与**kwargs滑动条传参问题
        文章图片


        四、滚动条控制h、s、v(min && max)
        1、创建滚动条
        API
        CV_EXPORTS int createTrackbar(const string& trackbarname, const string& winname,int* value, int count,TrackbarCallback onChange = 0,void* userdata = https://www.it610.com/article/0);

        形式参数一trackbarname:滑动空间的名称;
        形式参数二winname:滑动空间用于依附的图像窗口的名称;
        形式参数三value:初始化阈值;
        形式参数四count:滑动控件的刻度范围;
        形式参数五TrackbarCallback:是回调函数,其定义如下
        typedef void (CV_CDECL *TrackbarCallback)(int pos, void* userdata);

        # 3、创建h、s、v滚动条cv2.createTrackbar('hmin', 'h', 12, 179, Renew)cv2.createTrackbar('hmax', 'h', 37, 179, Renew)cv2.createTrackbar('smin', 's', 12, 179, Renew)cv2.createTrackbar('smax', 's', 37, 179, Renew)cv2.createTrackbar('vmin', 'v', 12, 179, Renew)cv2.createTrackbar('vmax', 'v', 37, 179, Renew)

        OpenCV基础HSV颜色空间*args与**kwargs滑动条传参问题
        文章图片


        2、回调函数 -- 阈值设置
        API
        inRange()
        主要是将在两个阈值内的像素值设置为白色(255),而不在阈值区间内的像素值设置为黑色(0),该功能类似于之间所讲的双阈值化操作。
        void inRange(InputArray src, InputArray lowerb,InputArray upperb, OutputArray dst);

        参数1:输入要处理的图像,可以为单通道或多通道。
        参数2:包含下边界的数组或标量。
        参数3:包含上边界数组或标量。
        参数4:输出图像,与输入图像src 尺寸相同且为CV_8U 类型。
        (注:dst输出二值化之后的图像)
        # 1、获取滑动条反馈值hmin = cv2.getTrackbarPos('hmin', 'h')hmax = cv2.getTrackbarPos('hmax', 'h')smin = cv2.getTrackbarPos('smin', 's')smax = cv2.getTrackbarPos('smax', 's')vmin = cv2.getTrackbarPos('vmin', 'v')vmax = cv2.getTrackbarPos('vmax', 'v') # 2、设置阈值(inRange:在阈值(min,max)之内,设置为白色;在阈值之外,设置为黑色)h_thresh = cv2.inRange(np.array(h), np.array(hmin), np.array(hmax))s_thresh = cv2.inRange(np.array(s), np.array(smin), np.array(smax))v_thresh = cv2.inRange(np.array(v), np.array(vmin), np.array(vmax))

        OpenCV基础HSV颜色空间*args与**kwargs滑动条传参问题
        文章图片


        3、回调函数 -- 感兴趣值
        API
        bitwise_and()
        图像的与运算主要用于获取某个图像中感兴趣的部分,是针对两个图像矩阵数组或一个数组与标量的按位与。
        # 3、获取感兴趣二值(与运算)interest = cv2.bitwise_and(h_thresh, cv2.bitwise_and(s_thresh, v_thresh))

        OpenCV基础HSV颜色空间*args与**kwargs滑动条传参问题
        文章图片

        总代码
        # HSV颜色空间与滑动条(*args && **args)import cv2import numpy as np# 回调函数# *args:传入参数未知,且不需要知道参数名称# **args:传入参数未知,但需要知道参数名称def HSV_CallBack(*args):# 1、获取滑动条反馈值hmin = cv2.getTrackbarPos('hmin', 'h_binary')hmax = cv2.getTrackbarPos('hmax', 'h_binary')smin = cv2.getTrackbarPos('smin', 's_binary')smax = cv2.getTrackbarPos('smax', 's_binary')vmin = cv2.getTrackbarPos('vmin', 'v_binary')vmax = cv2.getTrackbarPos('vmax', 'v_binary')# 2、设置阈值(inRange:在阈值(min,max)之内,设置为白色;在阈值之外,设置为黑色)h_binary = cv2.inRange(np.array(h), np.array(hmin), np.array(hmax))s_binary = cv2.inRange(np.array(s), np.array(smin), np.array(smax))v_binary = cv2.inRange(np.array(v), np.array(vmin), np.array(vmax)) # 3、获取感兴趣二值(与运算)binary = cv2.bitwise_and(h_binary, cv2.bitwise_and(s_binary, v_binary)) # 4、显示cv2.imshow('h_binary', h_binary)cv2.imshow('s_binary', s_binary)cv2.imshow('v_binary', v_binary)cv2.imshow('binary', binary) def Show_HSV():global hsv, h, s, v# 0、创建窗口cv2.namedWindow('h_binary')cv2.namedWindow('s_binary')cv2.namedWindow('v_binary')# 1、获取hsv图片hsv = cv2.cvtColor(img, cv2.COLOR_RGB2HSV)cv2.imshow('hsv', hsv)# 2、获取h、s、v三通道图片h, s, v = cv2.split(hsv)# 3、创建h、s、v滚动条cv2.createTrackbar('hmin', 'h_binary', 12, 179, HSV_CallBack)cv2.createTrackbar('hmax', 'h_binary', 37, 179, HSV_CallBack)cv2.createTrackbar('smin', 's_binary', 12, 179, HSV_CallBack)cv2.createTrackbar('smax', 's_binary', 37, 179, HSV_CallBack)cv2.createTrackbar('vmin', 'v_binary', 12, 179, HSV_CallBack)cv2.createTrackbar('vmax', 'v_binary', 37, 179, HSV_CallBack)HSV_CallBack()if __name__ == '__main__':global imgimg = cv2.imread('Resource/test.jpg')cv2.imshow('img', img)# 显示h、s、vShow_HSV() cv2.waitKey(0)


        参考资料 短动画慢语速1分钟讲清影视调色中色彩形成原理基础——RGB与HSV_哔哩哔哩_bilibili
        ???Python编程中*args与**kwargs区别作用详解
        createTrackbar使用方法及步骤
        以上就是OpenCV基础HSV颜色空间*args与**args滑动条传参问题的详细内容,更多关于HSV颜色空间*args与**args滑动条传参的资料请关注脚本之家其它相关文章!

          推荐阅读