千家信息网

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

发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,今天就跟大家聊聊有关如何理解OpenCV基础HSV颜色空间*args与**kwargs滑动条传参问题,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收
千家信息网最后更新 2025年02月23日如何理解OpenCV基础HSV颜色空间*args与**kwargs滑动条传参问题

今天就跟大家聊聊有关如何理解OpenCV基础HSV颜色空间*args与**kwargs滑动条传参问题,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

    一、基础理论

    HSV:HSV是一种为了加快调色效率,且易于理解的概念。

    Hue:色相(具体的颜色)

    Saturation:饱和度、色彩纯净度

    Value:明度

    1、Hue(色相)

    Hue:色相(具体的颜色)

    2、Value(明度)

    明度:色彩的明亮程度,单通道亮度(并不等同于整体发光量)。

    (明度越高越白,越低越黑,一般提高明度会同时提高R、G、B三通道的数值)

    3、Saturation(饱和度)

    Saturation:饱和度、色彩纯度。(越低越灰,越高越纯)

    (一般调高饱和度会降低RGB中相对较低的数值,凸显主要颜色的纯度。 )

    B站视频讲解:

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

    二、hsv三通道及单通道效果

    三、*args && **kwargs

    *args:传入参数未知,且不需要知道参数名称。

    **args:传入参数未知,但需要知道参数名称。

    四、滚动条控制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 = 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)

    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))

    3、回调函数 -- 感兴趣值

    API

    bitwise_and()

    图像的与运算主要用于获取某个图像中感兴趣的部分,是针对两个图像矩阵数组或一个数组与标量的按位与。

    # 3、获取感兴趣二值(与运算)    interest = cv2.bitwise_and(h_thresh, cv2.bitwise_and(s_thresh, v_thresh))

    总代码

    # 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 img    img = cv2.imread('Resource/test.jpg')    cv2.imshow('img', img)    # 显示h、s、v    Show_HSV()     cv2.waitKey(0)

    看完上述内容,你们对如何理解OpenCV基础HSV颜色空间*args与**kwargs滑动条传参问题有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

    参数 阈值 图像 颜色 名称 空间 形式 形式参数 基础 兴趣 函数 数组 色彩 通道 饱和度 明度 饱和 内容 标量 白色 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 中学生网络安全考试 网络安全甲方和乙方哪个好 上海名橙网络技术有限公司 摩尔庄园中国画舫服务器 软件开发流程规范 新一代网络技术的主要技术 诺顿网络安全好吗 珠海在线内训软件开发 软件开发应该开什么税种发票 数据库输入密码无法登录 青少年应该如何治理网络安全 计算机网络技术开学要带电脑么 旧路由器无线桥接dns服务器 广东电玩城游戏软件开发项目 生成DBIS系统支持的数据库 数据库安全性视图机制 计算机网络技术层面上的技术 CIS服务器导轨 多媒体软件开发营业范围 上网行为管理服务器的连接 数据库技术及应用测验答案 数据库保存的路径怎么调用 上海名橙网络技术有限公司 网络技术对应哪些专业 杭州博达互联网科技有限公司 海安无忧网络技术创新服务 无锡电话软件开发供应 常用的文本数据库 网络安全主要是干什么的 网络安全周宣活动总结
    0