opencv,图像处理,rgb转换为hsv空间
转载: https://blog.csdn.net/dajiyi1998/article/details/60606094?utm_source=blogxgwz4
图像RGB空间转换为HSV空间。
H参数表示色彩信息,即所处的光谱颜色的位置。该参数用一角度量来表示,红、绿、蓝分别相隔120度。互补色分别相差180度。
纯度S为一比例值,范围从0到1,它表示成所选颜色的纯度和该颜色最大的纯度之间的比率。S=0时,只有灰度。
V表示色彩的明亮程度,范围从0到1。有一点要注意:它和光强度之间并没有直接的联系。
max=max(R,G,B)
min=min(R,G,B)
if R = max, H = (G-B)/(max-min)
if G = max, H = 2 + (B-R)/(max-min)
if B = max, H = 4 + (R-G)/(max-min) H = H * 60
if H < 0, H = H + 360 V=max(R,G,B)
S=(max-min)/max
代码为:
//转换为HSV
void Rgb2Hsv(Mat &image, Mat &hsv)
{float maxV = 0,minV = 0;float V = 0, S = 0, H = 0;float v = 0, s = 0, h = 0;float R = 0, G = 0, B = 0;float delta = 0, tmp = 0;for (int i = 0; i < image.rows; i++){for (int j = 0; j < image.cols; j++){R = image.at<Vec3b>(i, j)[0];G = image.at<Vec3b>(i, j)[1];B = image.at<Vec3b>(i, j)[2];R = R / 255.0;B = B / 255.0;G = G / 255.0;tmp = min(R, G);minV = min(tmp, B);tmp = max(R, G);maxV = max(tmp, B);V = maxV; // vdelta = maxV - minV;if (maxV != 0)S = delta / maxV; // selse{S = 0;}if (R == maxV)H = (G - B) / delta;else if (G == maxV)H = 2 + (B - R) / delta;elseH = 4 + (R - G) / delta;H *= 60;if (H < 0)H += 360;h = H / 2;s = S * 255.0;v = V * 255.0;hsv.at<Vec3b>(i, j).val[0] = h;hsv.at<Vec3b>(i, j).val[1] = s;hsv.at<Vec3b>(i, j).val[2] = v;}}
}
其他参考1: https://www.cnblogs.com/shuaishuaidefeizhu/p/7155123.html
其他参考2: http://lib.csdn.net/article/opencv/25897
其他参考3: https://www.cnblogs.com/wangyblzu/p/5710715.html
其他参考4:https://blog.csdn.net/kakiebu/article/details/79476305
OpenCV 的文档中是这样解释的:原本输出的 HSV 的取值范围分别是 0-360, 0-1, 0-1;但是为了匹配目标数据类型 OpenCV 将每个通道的取值范围都做了修改,于是就变成了 0-180, 0-255, 0-255,并且同时解释道:为了适应 8bit 0-255 的取值范围,将 hue 通道 0-360 的取值范围做了减半处理,这就是为什么 OpenCV 中 hue 通道的取值范围是0-180;
其他参考5:https://zh.wikipedia.org/wiki/HSL%E5%92%8CHSV%E8%89%B2%E5%BD%A9%E7%A9%BA%E9%97%B4
opencv,图像处理,rgb转换为hsv空间相关推荐
- Opencv的RGB到HSV颜色空间转换
从 RGB 到 HSL 或 HSV 的转换 设 (r, g, b) 分别是一个颜色的红.绿和蓝坐标,它们的值是在 0 到 1 之间的实数.设 max 等价于 r, g 和 b 中的最大者.设 min ...
- OpenCV打开摄像头,RGB转HSV空间
文章目录 前言 一.使用OpenCV打开摄像头 二.使用OpenCV进行图像预处理 前言 有段时间没有更新了,最近主要在忙一个项目,用到了OpenCV,故想把一些常用代码在这里备份一下,一起学习. 环 ...
- 图片RGB转换为HSV
做毕业设计视频中人体移动的时候有阴影,用混合高斯去除背景的时候阴影也在,现在用的二值化(130,255)把阴影给去除了,想改进把视频弄成HSV去除阴影后再用混合高斯处理,提取出二值化(0,255)就可 ...
- 【MATLAB】RGB转换为HSV三通道
Matlab自带的图片所在路径为C:\Program Files\MATLAB\R2018b\toolbox\images\imdata,可以用其他图片. 代码: %rgb2hsv clear clc ...
- OpenCV中RGB转HSV
max_v = max(r,g,b) min_v = max(r,g,b) v = max(r,g,b) s = (max-min)/(max)* 255if r = max, h = (g-b)/( ...
- 使用MFC实现将图像的RGB值转换到HSV空间,同时进行调节HSV,再将调节后的HSV值传进去转换到RGB空间实现图像在HSV空间中的色度、饱和度、亮度的调节
工程上传到了github ,之前有一版忘记推送了,现在这个链接应该是没问题的了 工程的github链接 希望能帮到你. 文章内容: 1.回顾上文 2.实验步骤&要点提示&代码分析 3. ...
- 使用Opencv将RGB颜色空间转换到HSV颜色空间/灰度图
一. 使用cvCvtColor函数将RGB颜色空间转换到HSV颜色空间 所需函数: 1.cvCvtColor 函数功能:颜色空间转换 函数原型: void cvCvtColor( const CvAr ...
- python数字图像处理、色彩空间类型转换_Python+OpenCV图像处理—— 色彩空间转换...
一.色彩空间的转换 代码如下: #色彩空间转换 import cv2 as cv def color_space_demo(img): gray = cv.cvtColor(img, cv.COLOR ...
- 【Python·OpenCV】如何实现 HSV 与灰度图的相互转换?
文章目录 一.引言 二.为什么需要 HSV ? 三.HSV 三个分量表示什么? 四.绘图误区 五.HSV 和灰度图的转换 六.参考链接 Github 项目地址:https://github.com/S ...
最新文章
- umdh windbg分析内存泄露
- c 链表之 快慢指针 查找循环节点(转)
- 几何画板200个经典课件_动态几何画板 Geogebra
- matplotlib —— 添加文本信息(text)
- ubuntu php 解析,ubuntu运行后台php服务详解
- Ubuntu下安装visual studio code
- Python之 continue继续循环
- JS地图经纬度正则表达式校验
- 数据库--开发一个房产信息系统实现居民房产信息管理
- win7刷新环境变量的方法
- LOCAL_CERTIFICATE作用
- ALSA 中 hw 和 plughw 的区别
- 计算机网络——网络应用(上)
- 解决 Chrome 浏览器跨域加载本地文件的问题
- mysql mtq_GoLang 连接 Mysql 数据库
- python——脚本实现检测目标ip是否存在ftp笑脸漏洞(ftp后门漏洞)
- 新浪体育——篮球足球的直播和战报爬取
- Webview执行goBack不能返回
- 秒速五厘米(为情怀而补的题)
- 大数据的一生一世——谈数据冷热分离技术