从 RGB 到 HSL 或 HSV 的转换

设 (r, g, b) 分别是一个颜色的红、绿和蓝坐标,它们的值是在 0 到 1 之间的实数。设 max 等价于 r, gb 中的最大者。设 min 等于这些值中的最小者。要找到在 HSL 空间中的 (h, s, l) 值,这里的 h ∈ [0, 360)度是角度的色相角,而 s, l ∈ [0,1] 是饱和度和亮度,计算为:

(1)Matlab RGB转换为HSV

I = imread('Lena.jpg');
HSV = rgb2hsv(I);
H = HSV(:, :, 1);
S = HSV(:, :, 2);
V = HSV(:, :, 3);
figure;
subplot(2, 3, 1); imshow(I);
//subplot(2, 3, 2); imshow(HSV);
subplot(2, 3, 4); imshow(H);
subplot(2, 3, 5); imshow(S);
subplot(2, 3, 6); imshow(V);

(2)Opencv中RGB转换为HSV

// BRGtoHSVShow.cpp : 定义控制台应用程序的入口点。
//

//#include "stdafx.h"
#include "cv.h"
#include "cxcore.h"
#include "highgui.h"
#include "cvaux.h"

int main( )
{
 IplImage* src = NULL;
 IplImage* floatsrc = NULL;
 IplImage* floathsv = NULL;
 IplImage* floatimgH = NULL;
 IplImage* floatimgS = NULL;
 IplImage* floatimgV = NULL;

cvNamedWindow( "src", 1 );
 cvNamedWindow( "H通道", 1 );
 cvNamedWindow( "S通道", 1 );
 cvNamedWindow( "V通道", 1 );

src = cvLoadImage( "lena.jpg", -1);
cvShowImage( "src", src );
 CvSize size = cvGetSize( src );

//先将图像转换成float型的
 floatsrc = cvCreateImage( size, IPL_DEPTH_32F, 3 );
 floathsv = cvCreateImage( size, IPL_DEPTH_32F, 3 );
 floatimgH = cvCreateImage( size, IPL_DEPTH_32F, 1 );
 floatimgS = cvCreateImage( size, IPL_DEPTH_32F, 1 );
 floatimgV = cvCreateImage( size, IPL_DEPTH_32F, 1 );

//将src从8位转换到32位的float型
 cvConvertScale( src, floatsrc, 1.0/255.0, 0 );//归一化之后方能够显示
 //cvConvertScale( src, floatsrc, 1, 0 );
 //cvShowImage("floatsrc",floatsrc);
 //cvWaitKey(-1);

//将float型图像 从BGR转换到HSV  如果需要转换到其他的颜色空间 那么改变CV_BGR2HSV即可
 //cvCvtColor要求两个参数的类型必须完全相同,所以要转为float型
 cvCvtColor( floatsrc, floathsv, CV_BGR2HSV );

//将三通道图像 分解成3个单通道图像,H对应的通道时0,S、V对应的通道时1和2
 //cvCvtPixToPlane(picHSV, h_plane, s_plane, v_plane, 0);
 cvSplit( floathsv, floatimgH, floatimgS, floatimgV, NULL);

cvShowImage( "src", src );
 cvShowImage( "H通道", floatimgH );
 cvShowImage( "S通道", floatimgS );
 cvShowImage( "V通道", floatimgV );
//CV_BGR2HSV

cvWaitKey( 0 );

cvReleaseImage( &src );
 cvReleaseImage( &floathsv );
 cvReleaseImage( &floatimgH );
 cvReleaseImage( &floatimgS );
 cvReleaseImage( &floatimgV );

return 0;
}

参考资料:

http://blog.163.com/my_it_dream_pwj/blog/static/178414305201131310153036/

http://www.ilovematlab.cn/thread-95980-1-1.html

http://blog.sina.com.cn/s/blog_658cfb1d01014fv5.html

http://zhidao.baidu.com/question/259749959.html

http://www.opencv.org.cn/forum/viewtopic.php?t=4032

http://zh.wikipedia.org/wiki/HSL%E5%92%8CHSV%E8%89%B2%E5%BD%A9%E7%A9%BA%E9%97%B4

Opencv的RGB到HSV颜色空间转换相关推荐

  1. RGB与HSV颜色空间转换

    RGB转化到HSV的算法: max=max(R,G,B): min=min(R,G,B): V=max(R,G,B): S=(max-min)/max: HSV颜色空间模型(圆锥模型) [2] if  ...

  2. 数字图像处理与Python实现-颜色空间转换-RGB颜色空间与HSV颜色空间转换

    RGB颜色空间与HSV颜色空间转换 RGB颜色空间与HSV颜色空间转换 1. 前言 2. RGB颜色空间与HSV颜色空间转换描述 3. 代码实现 1. 前言 HSV(Hue, Saturation, ...

  3. 利用OpenCV的函数cvtcolor()进行颜色空间转换时需要注意的地方

    OpenCV的函数cvtcolor()的原型如下: C++原型: void cv::cvtColor(InputArray src,OutputArray dst,int code,int dstCn ...

  4. 由RGB到HSV颜色空间的理解

    1. RGB模型 2. HSV模型 3. 如何理解RGB与HSV的联系 4. HSV在图像处理中的应用 5. opencv中RGB-->HSV实现 在图像处理中,最常用的颜色空间是RGB模型,常 ...

  5. opencv图像处理:一、颜色空间转换

    一.简介 opencv有超150种颜色空间转换,在这里我们主要介绍2种经常用到的颜色空间转换(RGB->GRAY, RGB->HSV). HVS色相取值范围[0, 179],亮度取值范围[ ...

  6. 从 RGB 到 HSV 的转换详细介绍

    从RGB 到 HSV 的转换详细介绍 1.RGB RGB是从颜色发光的原理来设计定的,通俗点说它的颜色混合方式就好像有红.绿.蓝三盏灯,当它们的光相互叠合的时候,色彩相混,而亮度却等于两者亮度之总和, ...

  7. FPGA实现RGB转HSV的转换

    FPGA实现RGB转HSV的转换 欢迎添加QQ:2639406604一起交流 1 RGB色彩空间 在图像处理中,最常见的就是RGB色彩模型.在RGB模型中,每种颜色出现在红.绿.蓝的原色光谱分量中.该 ...

  8. 由RGB到HSV的转换详解

    由RGB到HSV的转换详解 1RGB色彩空间 在图像处理中,最常见的就是RGB色彩模型.在RGB模型中,每种颜色出现在红.绿.蓝的原色光谱分量中.该模型基于笛卡尔坐标系.如图1所示,RGB原色值位于3 ...

  9. RGB到HSV色彩空间转换表

    RGB到HSV色彩空间转换表

最新文章

  1. 回调函数和闭包的理解
  2. 索尼将成立200亿日元基金 投资机器人、人工智能等新兴企业
  3. Tomcat如何将项目发布到webapps目录下
  4. 网易易盾的“外挂对抗战”,游戏出海之路如何走得更安全?
  5. [Asp.Net] Form验证中 user.identity为false
  6. python hash函数_Python hash()函数
  7. java session.load_java – 了解hibernate中的session.get vs session.load方法
  8. 20145322何志威 《信息安全系统设计基础》第2周学习总结
  9. Cannot uninstall ‘llvmlite‘. It is a distutils installed project and thus we cannot accurately deter
  10. cassandra java cql_使用Cassandra CQL Java Driver 访问Lindorm
  11. 如果到来,会是怎样情况,fuck,
  12. python- re模块(正则表达式)
  13. Jmeter报错Couldn‘t save test plan to file
  14. vue全家桶_vue脚手架
  15. 年薪20万、50万、100万的算法工程师,到底有什么区别?
  16. Lua Busted 单元测试实战
  17. Python数据压缩和存档——zlib/gzip/bzip2/lzma/zip/tar
  18. MySQL常见数据类型(小胖虎带你了解MySQL基础知识,只为博君一关注)
  19. 康海时代nc系列串口服务器,康海时代NC900系列产品
  20. 悲剧:国际品牌大部分手机打不通救命电话,只通“911”

热门文章

  1. AutoVue现在支持本地2D Creo / ProE图纸
  2. tim-db工具包-dao层查询工具
  3. JAVA矩阵包JAMA学习
  4. electron 中使用autobahn 不工作问题记录
  5. DOS下载入ISO镜像!
  6. 手机号以及区号的正则判断方法
  7. 于新一轮技术变革转折点,戴尔科技集团全球峰会开幕!
  8. 揭密迅雷BT式下载本质 [揭密迅雷]
  9. InfoQ专访“白帽黑客”吴石:两次破解特斯拉的腾讯安全科恩实验室这次为什么瞄准物联网?
  10. 从 0 开始学 Python 自动化测试开发(二):环境搭建