HSV是一种比较直观的颜色模型,这个模型中颜色的参数分别是:色调(H, Hue),饱和度(S,Saturation),明度(V, Value)。
1、色调(H)
用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。它们的补色是:黄色为60°,青色为180°,品红为300°;
2、饱和度(S)
饱和度S表示颜色接近光谱色的程度。一种颜色,可以看成是某种光谱色与白色混合的结果。其中光谱色所占的比例愈大,颜色接近光谱色的程度就愈高,颜色的饱和度也就愈高。饱和度高,颜色则深而艳。光谱色的白光成分为0,饱和度达到最高。通常取值范围为0%~100%,值越大,颜色越饱和。
3、明度(V)
明度表示颜色明亮的程度,对于光源色,明度值与发光体的光亮度有关;对于物体色,此值和物体的透射比或反射比有关。通常取值范围为0%(黑)到100%(白)。
RGB和CMY颜色模型都是面向硬件的,而HSV(Hue Saturation Value)颜色模型是面向用户的。
HSV模型的三维表示从RGB立方体演化而来。设想从RGB沿立方体对角线的白色顶点向黑色顶点观察,就可以看到立方体的六边形外形。六边形边界表示色彩,水平轴表示纯度,明度沿垂直轴测量。
4、六锥形
H参数表示色彩信息,即所处的光谱颜色的位置。该参数用一角度量来表示,红、绿、蓝分别相隔120度。互补色分别相差180度。
纯度S为一比例值,范围从0到1,它表示成所选颜色的纯度和该颜色最大的纯度之间的比率。S=0时,只有灰度。
V表示色彩的明亮程度,范围从0到1。有一点要注意:它和光强度之间并没有直接的联系。
![](https://i-blog.csdnimg.cn/blog_migrate/3a01286876223aa0c24e05d62bf0c809.png)
5、RGB转化为HSV
(1)RGB转化为HSV的算法
max=max(R,G,B);
min=min(R,G,B);
V=max(R,G,B);
S=(max-min)/max;
if (R = max) H =(G-B)/(max-min)* 60;
if (G = max) H = 120+(B-R)/(max-min)* 60;
if (B = max) H = 240 +(R-G)/(max-min)* 60;
if (H < 0) H = H+ 360;
(2)“RGB转换为HSV”在OpenCV中的实现
void cvtColor(InputArray src, OutputArray dst, int code, int dstCn=0 )
第三个参数code取宏CV_BGR2HSV
在OpenCV中HSV三个分量的取值范围:
H: 0 — 180
S: 0 — 255
V: 0 — 255
6、新增知识点
1、光谱色
人眼受可见光不同波长的刺激产生了红、橙、黄、绿、青、蓝、紫等颜色的感觉,每种颜色对应一个波长值,这种颜色称为光谱色。当一束白光照射在三棱镜上时,便会分解成红、橙、黄、绿、青、蓝、紫七色光,这七种色光叫光谱色,这是自然界最饱和的色光,由这七色光组成的彩带叫做光谱。其中白色光最强,蓝色光最弱。
2、互补色
色彩中的互补色有红色与青色互补,蓝色与黄色互补,绿色与品红色互补。在光学中指两种色光以适当的比例混合而能产生白光时,则这两种颜色就称为“互为补色”。补色并列时,会引起强烈对比的色觉,会感到红的更红、绿的更绿。
- 等量的红光+绿光=黄光,互补于蓝光;
- 等量的红光+蓝光=品红光(也称洋红,即较浅的紫红),互补于绿光;
- 等量的绿光+蓝光=青光,互补于红光。
可参考的相关hsv博客:
https://blog.csdn.net/weixin_39490421/article/details/85998984