有关opencv的学习(6)—图像的HSV色彩空间
2017-03-04 22:38
507 查看
HSV色彩空间,即为用图像的色调(Hue),饱和度(Saturation),明度(Value)来描述颜色,即为颜色的直观特性。也称六角锥体模型,如下图所示:
色调——表示主色:绿色,黄色,红色。
用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。它们的补色是:黄色为60°,青色为180°,品红为300°;
饱和度——表示颜色的鲜艳程度
饱和度S表示颜色接近光谱色的程度。一种颜色,可以看成是某种光谱色与白色混合的结果。其中光谱色所占的比例愈大,颜色接近光谱色的程度就愈高,颜色的饱和度也就愈高。饱和度高,颜色则深而艳。光谱色的白光成分为0,饱和度达到最高。通常取值范围为0%~100%,值越大,颜色越饱和。
明度——表示某种颜色的光亮程度
对于光源色,明度值与发光体的光亮度有关;对于物体色,此值和物体的透射比或反射比有关。通常取值范围为0%(黑)到100%(白)。
代码如下:
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main( )
{
Mat image=imread("/Users/zhangxiaoyu/Desktop/2.png");
if(image.empty())
{
cout<<"Error!cannot be read...../n";
return -1;
}
//转换为HSV色彩空间
Mat hsv;
cvtColor(image, hsv, CV_BGR2HSV);
//把三个通道分割进三个图像中
vector<Mat>channels;
split(hsv, channels);
//channels[0]是色调
//channels[1]是饱和度
//channels[2]是亮度
namedWindow("hue");
imshow("hue", channels[0]);
namedWindow("
4000
saturation");
imshow("saturation", channels[1]);
namedWindow("value");
imshow("value", channels[2]);
waitKey(0);
}
愿图像如下所示:
图像的色调通道显示如下:
图像的饱和度通道显示如下:
图像的明度通道显示如下:
色调——表示主色:绿色,黄色,红色。
用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。它们的补色是:黄色为60°,青色为180°,品红为300°;
饱和度——表示颜色的鲜艳程度
饱和度S表示颜色接近光谱色的程度。一种颜色,可以看成是某种光谱色与白色混合的结果。其中光谱色所占的比例愈大,颜色接近光谱色的程度就愈高,颜色的饱和度也就愈高。饱和度高,颜色则深而艳。光谱色的白光成分为0,饱和度达到最高。通常取值范围为0%~100%,值越大,颜色越饱和。
明度——表示某种颜色的光亮程度
对于光源色,明度值与发光体的光亮度有关;对于物体色,此值和物体的透射比或反射比有关。通常取值范围为0%(黑)到100%(白)。
代码如下:
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main( )
{
Mat image=imread("/Users/zhangxiaoyu/Desktop/2.png");
if(image.empty())
{
cout<<"Error!cannot be read...../n";
return -1;
}
//转换为HSV色彩空间
Mat hsv;
cvtColor(image, hsv, CV_BGR2HSV);
//把三个通道分割进三个图像中
vector<Mat>channels;
split(hsv, channels);
//channels[0]是色调
//channels[1]是饱和度
//channels[2]是亮度
namedWindow("hue");
imshow("hue", channels[0]);
namedWindow("
4000
saturation");
imshow("saturation", channels[1]);
namedWindow("value");
imshow("value", channels[2]);
waitKey(0);
}
愿图像如下所示:
图像的色调通道显示如下:
图像的饱和度通道显示如下:
图像的明度通道显示如下:
相关文章推荐
- 【学习 OpenCV】—— 色彩空间(RGB、HSV、rgb2hsv、rgb2gray 的实现)
- Opencv学习笔记(三):图像的使用与操作_颜色空间的变换
- OpenCV->HSV色彩空间
- 有关opencv的学习(2)—在图像中加入椒盐噪声
- 有关opencv的学习(16)—图像的膨胀和腐蚀(2)
- 有关opencv的学习(9)—计算图像直方图
- 基于OpenCV的RGB和HSV色彩空间相互转换C++程序
- Atitit rgb yuv hsv HSL 模式和 HSV(HSB) 图像色彩空间的区别
- 有关opencv的学习(3)—图像的减色算法
- opencv学习(三)之图像像素遍历(颜色空间缩减、查找表)
- 有关opencv的学习(15)—图像的膨胀和腐蚀(1)
- opencv学习之图像颜色空间转换
- OpenCv学习笔记(六)----图像空间缩减,OpenCv中的计时函数和OpenCv中操作图像单个像素点的方法
- [OpenCV基础] OpenCV中的HSV色彩空间
- 有关opencv的学习(4)—图像的锐化
- opencv之Rgb图像转化到HSV、Lab空间,对各通道的操作
- OpenCV->HSV色彩空间
- 彩色图像--色彩空间 HSI(HSL)、HSV(HSB)
- 有关opencv的学习(13)—使用固定阈值处理图像
- 有关opencv的学习(5)—图像的重映射