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:色相(具体的颜色)
文章图片
2、Value(明度)
【OpenCV基础HSV颜色空间*args与**kwargs滑动条传参问题】明度:色彩的明亮程度,单通道亮度(并不等同于整体发光量)。
(明度越高越白,越低越黑,一般提高明度会同时提高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 = 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)
文章图片
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 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滑动条传参的资料请关注脚本之家其它相关文章!
推荐阅读
- opencv|opencv C++模板匹配的简单实现
- Java|Java OpenCV图像处理之SIFT角点检测详解
- Python基础|Python基础 - 练习1
- Java|Java基础——数组
- Java基础-高级特性-枚举实现状态机
- 营养基础学20180331(课间随笔)??
- iOS面试题--基础
- HTML基础--基本概念--跟着李南江学编程
- typeScript入门基础介绍
- c++基础概念笔记