我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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 class="lazy" data-src, InputArray lowerb,
                              InputArray upperb, OutputArray dst);

参数1:输入要处理的图像,可以为单通道或多通道。

参数2:包含下边界的数组或标量。

参数3:包含上边界数组或标量。

参数4:输出图像,与输入图像class="lazy" data-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 cv2
import 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)

参考资料

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

​​​Python编程中*args与**kwargs区别作用详解

createTrackbar使用方法及步骤

以上就是OpenCV基础HSV颜色空间*args与**args滑动条传参问题的详细内容,更多关于HSV颜色空间*args与**args滑动条传参的资料请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录