OpenCV(基础补充)颜色空间HSV *args与**args(滑动条传参问题)
目录
一、基础理论
1、Hue(色相)
2、Value(明度)
3、Saturation(饱和度)
二、hsv三通道及单通道效果
三、*args && **args
*args:
**args:
四、滚动条控制h、s、v(min && max)
1、创建滚动条
API
2、回调函数 -- 阈值设置
API
inRange()
3、回调函数 -- 感兴趣值
API
bitwise_and()
总代码
参考资料
一、基础理论
HSV:HSV是一种为了加快调色效率,且易于理解的概念。
Hue:色相(具体的颜色)
Saturation:饱和度、色彩纯净度
Value:明度
1、Hue(色相)
Hue:色相(具体的颜色)
2、Value(明度)
明度:色彩的明亮程度,单通道亮度(并不等同于整体发光量)。
(明度越高越白,越低越黑,一般提高明度会同时提高R、G、B三通道的数值)
3、Saturation(饱和度)
Saturation:饱和度、色彩纯度。(越低越灰,越高越纯)
(一般调高饱和度会降低RGB中相对较低的数值,凸显主要颜色的纯度。 )
B站视频讲解:
短动画慢语速1分钟讲清影视调色中色彩形成原理基础——RGB与HSV
二、hsv三通道及单通道效果
三、*args && **args
*args:
*args:传入参数未知,且不需要知道参数名称。
**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 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 imgimg = cv2.imread('Resource/test.jpg')cv2.imshow('img', img)# 显示h、s、vShow_HSV()cv2.waitKey(0)
参考资料
短动画慢语速1分钟讲清影视调色中色彩形成原理基础——RGB与HSV_哔哩哔哩_bilibili
Python中*args、**args到底是什么、有啥区别、怎么用_qq_1170407931的博客-CSDN博客_argscreateTrackbar使用方法及步骤_mysee1989的专栏-CSDN博客
OpenCV(基础补充)颜色空间HSV *args与**args(滑动条传参问题)相关推荐
- OpenCV之highgui 模块. 高层GUI和媒体I/O: 为程序界面添加滑动条 OpenCV的视频输入和相似度测量 用OpenCV创建视频
为程序界面添加滑动条 在以前的教程中 (例如 linear blending 和 brightness and contrast adjustments)你有可能注意到需要 input 一些数值到我们 ...
- QT+OpenCV综合示例:图像混合(滑动条)
QT+OpenCV综合示例:图像混合(滑动条) 1.代码: 2.运行结果: 0)Widget_op.ui (界面文件)设计: 1.代码: 1)opencv_imwrite_Q.pro 添加: INCL ...
- 四、OpenCV颜色空间——HSV颜色模型
教程汇总:python基础入门系列 该章节主要介绍两种颜色空间RGB与HSV,HSV将作为我们主要使用的颜色空间. RGB: 在计算机体系中,最常用的颜色空间是RGB模型,常用于颜色显示和图像处理,三 ...
- Opencv的RGB到HSV颜色空间转换
从 RGB 到 HSL 或 HSV 的转换 设 (r, g, b) 分别是一个颜色的红.绿和蓝坐标,它们的值是在 0 到 1 之间的实数.设 max 等价于 r, g 和 b 中的最大者.设 min ...
- Python编程基础:第二十五节 args参数*args
第二十五节 args参数*args 前言 实践 前言 我们目前学习到的函数的参数个数都是固定的,那么我们是否可以指定任意多个参数呢?其实是可以的,这里就用到了args参数,它可以将用户指定的任意多个参 ...
- 数字图像与机器视觉基础补充(2)--颜色转换+分割车牌
录 一.彩色图像文件转灰度文件 1.1 使用opencv 1.1.1 通过cvtColor库将其转为灰度 1.1.2 通过分离RGB三个通道得到三个通道的灰度图 1.2 不使用opencv 二.将彩色 ...
- OpenCV基础使用教程
Opencv的使用教程,opencv比较全的基础教程 置顶 weeksooo 于 2021-02-24 16:07:02 发布 6321 已收藏 185 分类专栏: 深度学习理论基础 文章标签: op ...
- python open-cv 基础知识总结(三)
上一章:python open-cv 基础知识总结(二) 1. 轮廓中心计算 本教程的目标是 (1) 检测图像中每个形状的轮廓, (2) 计算轮廓的中心 -也称为区域的 质心 . 为了实现这些目 ...
- java随机生成字母用三元运算符,【代码笔记】Java常识性基础补充(一)——赋值运算符、逻辑运算符、三元运算符、Scanner类、键盘输入、Random类、随机数...
为什么要进行Java常识性基础补充? 之前学习Java语言,学得很多很杂,而且是很多不同的方面插入讲解的,比如在跟班上课,自学java编程例子,java语法,过了很久,因为各种原因长时间不怎么写,有时 ...
最新文章
- 使用vux+ajax,Vue 应用中结合vux使用微信 jssdk的方法
- macos apache php,如何在mac上配置apache和php
- Linux cp命令 拷贝文件
- 在Maven仓库中添加Oracle JDBC驱动
- 计算机应用与科学专业简介,计算机应用技术学科专业简介
- js的with语句使用方法
- 【HDU - 5706】GirlCat(bfs)
- 这道 Go 题目外网超过 80% 的人都答错了,你来试试...
- 美团联合创始人王慧文卸任摩拜高管职位
- ffmpeg 的使用备忘
- 接口测试--自定义断言设置
- SharedObject实例.
- 嵌入式语音识别系统是什么
- 拓端tecdat|r语言ggplot2误差棒图快速指南
- java.lang.NoClassDefFoundError: com/baidu/ueditor/ActionEnter报错解决
- linux快捷键列表,全面总结Linux快捷键的使用
- 【面试题】总结最高频软件测试|思维发散|计算机基础|Linux|测试用例|接口测试|等技术面试题
- /deep/在chrome89+中出现样式混乱的问题
- 将Exr多个图片合成视频
- 微信公众号如何设置关键词回复Word/Excel/pdf/ppt等文件?