目录

一、基础理论

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(滑动条传参问题)相关推荐

  1. OpenCV之highgui 模块. 高层GUI和媒体I/O: 为程序界面添加滑动条 OpenCV的视频输入和相似度测量 用OpenCV创建视频

    为程序界面添加滑动条 在以前的教程中 (例如 linear blending 和 brightness and contrast adjustments)你有可能注意到需要 input 一些数值到我们 ...

  2. QT+OpenCV综合示例:图像混合(滑动条)

    QT+OpenCV综合示例:图像混合(滑动条) 1.代码: 2.运行结果: 0)Widget_op.ui (界面文件)设计: 1.代码: 1)opencv_imwrite_Q.pro 添加: INCL ...

  3. 四、OpenCV颜色空间——HSV颜色模型

    教程汇总:python基础入门系列 该章节主要介绍两种颜色空间RGB与HSV,HSV将作为我们主要使用的颜色空间. RGB: 在计算机体系中,最常用的颜色空间是RGB模型,常用于颜色显示和图像处理,三 ...

  4. Opencv的RGB到HSV颜色空间转换

    从 RGB 到 HSL 或 HSV 的转换 设 (r, g, b) 分别是一个颜色的红.绿和蓝坐标,它们的值是在 0 到 1 之间的实数.设 max 等价于 r, g 和 b 中的最大者.设 min ...

  5. Python编程基础:第二十五节 args参数*args

    第二十五节 args参数*args 前言 实践 前言 我们目前学习到的函数的参数个数都是固定的,那么我们是否可以指定任意多个参数呢?其实是可以的,这里就用到了args参数,它可以将用户指定的任意多个参 ...

  6. 数字图像与机器视觉基础补充(2)--颜色转换+分割车牌

    录 一.彩色图像文件转灰度文件 1.1 使用opencv 1.1.1 通过cvtColor库将其转为灰度 1.1.2 通过分离RGB三个通道得到三个通道的灰度图 1.2 不使用opencv 二.将彩色 ...

  7. OpenCV基础使用教程

    Opencv的使用教程,opencv比较全的基础教程 置顶 weeksooo 于 2021-02-24 16:07:02 发布 6321 已收藏 185 分类专栏: 深度学习理论基础 文章标签: op ...

  8. python open-cv 基础知识总结(三)

    上一章:python open-cv 基础知识总结(二) 1. 轮廓中心计算 本教程的目标是 (1)  检测图像中每个形状的轮廓, (2)  计算轮廓的中心 -也称为区域的  质心 . 为了实现这些目 ...

  9. java随机生成字母用三元运算符,【代码笔记】Java常识性基础补充(一)——赋值运算符、逻辑运算符、三元运算符、Scanner类、键盘输入、Random类、随机数...

    为什么要进行Java常识性基础补充? 之前学习Java语言,学得很多很杂,而且是很多不同的方面插入讲解的,比如在跟班上课,自学java编程例子,java语法,过了很久,因为各种原因长时间不怎么写,有时 ...

最新文章

  1. 使用vux+ajax,Vue 应用中结合vux使用微信 jssdk的方法
  2. macos apache php,如何在mac上配置apache和php
  3. Linux cp命令 拷贝文件
  4. 在Maven仓库中添加Oracle JDBC驱动
  5. 计算机应用与科学专业简介,计算机应用技术学科专业简介
  6. js的with语句使用方法
  7. 【HDU - 5706】GirlCat(bfs)
  8. 这道 Go 题目外网超过 80% 的人都答错了,你来试试...
  9. 美团联合创始人王慧文卸任摩拜高管职位
  10. ffmpeg 的使用备忘
  11. 接口测试--自定义断言设置
  12. SharedObject实例.
  13. 嵌入式语音识别系统是什么
  14. 拓端tecdat|r语言ggplot2误差棒图快速指南
  15. java.lang.NoClassDefFoundError: com/baidu/ueditor/ActionEnter报错解决
  16. linux快捷键列表,全面总结Linux快捷键的使用
  17. 【面试题】总结最高频软件测试|思维发散|计算机基础|Linux|测试用例|接口测试|等技术面试题
  18. /deep/在chrome89+中出现样式混乱的问题
  19. 将Exr多个图片合成视频
  20. 微信公众号如何设置关键词回复Word/Excel/pdf/ppt等文件?

热门文章

  1. xlrd.biffh.XLRDError: Excel xlsx file; not supported
  2. 微信小程序页面之间数据传递
  3. Flutter 拨打电话和跳转网页
  4. django文件上传
  5. 机器学习入门(13)— Affine 仿射层、Softmax 归一化指数函数层实现
  6. 《结对-贪吃蛇游戏-最终程序》
  7. 学习动力之“学习金字塔 (爱德加•戴尔)”理论
  8. 【BZOJ-30391057】玉蟾宫棋盘制作 悬线法
  9. 能让导师喜欢的学生(转自论坛)
  10. 十五个步骤收获学习的习惯