转载: 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空间相关推荐

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

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

  2. OpenCV打开摄像头,RGB转HSV空间

    文章目录 前言 一.使用OpenCV打开摄像头 二.使用OpenCV进行图像预处理 前言 有段时间没有更新了,最近主要在忙一个项目,用到了OpenCV,故想把一些常用代码在这里备份一下,一起学习. 环 ...

  3. 图片RGB转换为HSV

    做毕业设计视频中人体移动的时候有阴影,用混合高斯去除背景的时候阴影也在,现在用的二值化(130,255)把阴影给去除了,想改进把视频弄成HSV去除阴影后再用混合高斯处理,提取出二值化(0,255)就可 ...

  4. 【MATLAB】RGB转换为HSV三通道

    Matlab自带的图片所在路径为C:\Program Files\MATLAB\R2018b\toolbox\images\imdata,可以用其他图片. 代码: %rgb2hsv clear clc ...

  5. 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)/( ...

  6. 使用MFC实现将图像的RGB值转换到HSV空间,同时进行调节HSV,再将调节后的HSV值传进去转换到RGB空间实现图像在HSV空间中的色度、饱和度、亮度的调节

    工程上传到了github ,之前有一版忘记推送了,现在这个链接应该是没问题的了 工程的github链接 希望能帮到你. 文章内容: 1.回顾上文 2.实验步骤&要点提示&代码分析 3. ...

  7. 使用Opencv将RGB颜色空间转换到HSV颜色空间/灰度图

    一. 使用cvCvtColor函数将RGB颜色空间转换到HSV颜色空间 所需函数: 1.cvCvtColor 函数功能:颜色空间转换 函数原型: void cvCvtColor( const CvAr ...

  8. python数字图像处理、色彩空间类型转换_Python+OpenCV图像处理—— 色彩空间转换...

    一.色彩空间的转换 代码如下: #色彩空间转换 import cv2 as cv def color_space_demo(img): gray = cv.cvtColor(img, cv.COLOR ...

  9. 【Python·OpenCV】如何实现 HSV 与灰度图的相互转换?

    文章目录 一.引言 二.为什么需要 HSV ? 三.HSV 三个分量表示什么? 四.绘图误区 五.HSV 和灰度图的转换 六.参考链接 Github 项目地址:https://github.com/S ...

最新文章

  1. umdh windbg分析内存泄露
  2. c 链表之 快慢指针 查找循环节点(转)
  3. 几何画板200个经典课件_动态几何画板 Geogebra
  4. matplotlib —— 添加文本信息(text)
  5. ubuntu php 解析,ubuntu运行后台php服务详解
  6. Ubuntu下安装visual studio code
  7. Python之 continue继续循环
  8. JS地图经纬度正则表达式校验
  9. 数据库--开发一个房产信息系统实现居民房产信息管理
  10. win7刷新环境变量的方法
  11. LOCAL_CERTIFICATE作用
  12. ALSA 中 hw 和 plughw 的区别
  13. 计算机网络——网络应用(上)
  14. 解决 Chrome 浏览器跨域加载本地文件的问题
  15. mysql mtq_GoLang 连接 Mysql 数据库
  16. python——脚本实现检测目标ip是否存在ftp笑脸漏洞(ftp后门漏洞)
  17. 新浪体育——篮球足球的直播和战报爬取
  18. Webview执行goBack不能返回
  19. 秒速五厘米(为情怀而补的题)
  20. 大数据的一生一世——谈数据冷热分离技术

热门文章

  1. 利用BP神经网络逼近sin函数
  2. 国家级专新特精“小巨人”「皖仪科技」携手企企通,打造采购数字化平台成功上线
  3. 苦七群问答整理210730—现在的微信搜索,真的很强很方便。
  4. 【obs】导入qrc资源到vs工程
  5. seo经验分享 也许对你们有帮助
  6. Bootstrap在线设计|快速原型构建|可视化布局
  7. 让U盘变成密码启动锁方法
  8. 做好客户关系管理系统软件,客户流失不用愁
  9. 自己都不坚强,又有谁会在意
  10. 基于手机信令数据的交通出行方式划分