HSV空间各通道分离实验——直观了解各通道数值的意义
来源:互联网 发布:淘宝如何查看消费总额 编辑:程序博客网 时间:2024/05/30 22:43
HSV(Hue,Saturation,Value)是根据颜色的直观特性由A.R.Smith在1978年创建的一种颜色空间,也称六角锥体模型(Hexcone Model)。HSV色彩空间如下所示:
HSV代表的参数分别为:色调(H),饱和度(S),亮度(V)。
色调H:用角度度量,取值范围为0°~360,红、绿、蓝分别相隔120度。互补色分别相差180度,对应上图的角度。人类对色彩的感知中,最显著的、最重要的一方面确实可以说是色相;
饱和度S:表示颜色纯净的程度,取值范围为0.0~1.0,S=0时,只有灰度,对应上图的半径大小;
亮度V:表示颜色的明暗程度,取值范围为0.0(黑色)~1.0(白色)。对应上图的纵轴。
RGB和CMY颜色模型都是面向硬件的,而HSV(Hue Saturation Value)颜色模型是面向用户的。
HSV空间各通道分离与现实的实现代码如下
int main(int argc, char** argv) {////////////显示图像Mat image; image = imread("4.jpg");//导入图像Mat hsvimage,hue;imshow("image", image);cvtColor(image, hsvimage, CV_BGR2HSV); //RGB到HSV颜色空间的转换imshow("HSV", hsvimage); //直接把HSV规格的图像以RGB格式显示。显示出来的图像会与原图不同 vector<Mat> hsv; split(hsvimage,hsv);//将HSV三个通道分离 Mat tmp(image.size(),CV_8U,Scalar(0));//生成与原图一样尺寸的全0的Mat。其中CV_8U表示每个点8bit,无符号。即范围[0~255] vector<Mat> h,s,v; for(int i=0;i<3;i++) { if(i==0)//把H值赋给h的B,涂上蓝色 h.push_back(hsv[0]); else h.push_back(tmp); if(i==1)//把S值赋给s的G,涂上绿色 s.push_back(hsv[1]); else s.push_back(tmp); if(i==2)//把V值赋给v的R,涂上红色 v.push_back(hsv[2]); else v.push_back(tmp); }//分别显示: merge(h,hue);imshow("H", hue);merge(s,hue);imshow("S", hue); merge(v,hue);imshow("V", hue); while(1) { char c=cvWaitKey(33); if(c==27)break;//等待按键ESC }}
分解结果如下:
可以发现,直接把HSV规格的图像以RGB格式显示。显示出来的图像会与原图不同;H从最左到右递减,对应着不同的色调;S值在下半平面为最大值,在上半平面渐变;V值上半平面为最大值,下半平面渐变。反观原图可以观查到其中的对应关系。观查上半平面可以发现,S值越小颜色越淡,为0的时候变成白色。观查下半平面可以发现V值越小,颜色越暗,最后趋向于黑色。
1 0
- HSV空间各通道分离实验——直观了解各通道数值的意义
- opencv之Rgb图像转化到HSV、Lab空间,对各通道的操作
- OpenCV——RGB三通道分离
- OpenCV—多通道颜色分离&混合
- Opencv—分离多通道图像
- opencv:通道分离—split()函数
- 【OpenCV学习笔记】【函数学习】九(RGB空间各通道分离)
- 【OpenCV学习笔记】【函数学习】九(RGB空间各通道分离)--Mat类型
- LAB颜色空间各通道的取值范围
- LAB颜色空间各通道的取值范围
- OpenCV Mat图像颜色通道分离(split)合成(merge),各通道合图显示
- Opencv中HSV通道的图像的颜色判定
- Opencv中HSV通道的图像的颜色判定
- 分离多通道图像RGB的值 !!!!
- opencv 学习第六天 通道的分离
- OpenCV中cvSplit图像的通道分离
- OpenCV中cvSplit图像的通道分离
- 分离与合并图像通道的方法
- A Brief History of CNNs in Image Segmentation: From R-CNN to Mask R-CNN
- 关于VC预定义常量_WIN32,WIN32,_WIN64等预定义宏的介绍(整理、转载)
- xcode8以上,CoreData生成对象文件运行出现文件编译错误
- UVa 455 Periodic Strings
- Class.forName()用法解释
- HSV空间各通道分离实验——直观了解各通道数值的意义
- 维纳滤波和卡尔曼滤波
- IntelliJ IDEA 破解方法
- 动画之卫星菜单
- tsar安装
- “Use Legacy Swift Language Version” (SWIFT_VERSION) is required to be configured 这个错误解决方案
- java判断String类型是否能转换为int
- 玩转SSH端口转发
- Java 学习1--单例模式(Singleton)