hsv_hsv颜色空间 - CSDN
精华内容
参与话题
  • 从 RGB 到 HSV 的转换详细介绍

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

    从RGB 到 HSV 的转换详细介绍

    1.RGB

           RGB是从颜色发光的原理来设计定的,通俗点说它的颜色混合方式就好像有红、绿、蓝三盏灯,当它们的光相互叠合的时候,色彩相混,而亮度却等于两者亮度之总和,越混合亮度越高,即加法混合。

            红、绿、蓝三个颜色通道每种色各分为256阶亮度,在0时“灯”最弱——是关掉的,而在255时“灯”最亮。当三色灰度数值相同时,产生不同灰度值的灰色调,即三色灰度都为0时,是最暗的黑色调;三色灰度都为255时,是最亮的白色调。

            在电脑中,RGB的所谓“多少”就是指亮度,并使用整数来表示。通常情况下,RGB各有256级亮度,用数字表示为从0、1、2...直到255。注意虽然数字最高是255,但0也是数值之一,因此共256级。

    图1.1 RGB

    2.HSV

            HSV是一种比较直观的颜色模型,所以在许多图像编辑工具中应用比较广泛,这个模型中颜色的参数分别是:色调(H, Hue),饱和度(S,Saturation),明度(V, Value)。

    色调H

            用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。它们的补色是:黄色为60°,青色为180°,品红为300°;

    饱和度S

            饱和度S表示颜色接近光谱色的程度。一种颜色,可以看成是某种光谱色与白色混合的结果。其中光谱色所占的比例愈大,颜色接近光谱色的程度就愈高,颜色的饱和度也就愈高。饱和度高,颜色则深而艳。光谱色的白光成分为0,饱和度达到最高。通常取值范围为0%~100%,值越大,颜色越饱和。

    明度V

            明度表示颜色明亮的程度,对于光源色,明度值与发光体的光亮度有关;对于物体色,此值和物体的透射比或反射比有关。通常取值范围为0%(黑)到100%(白)。

         

    图2.1 HSV

    2.1应用openCV中HSV取值范围说明

    我们需要注意的在不同应用场景中,HSV取值范围是不尽相同的。

    1.PS软件时,H取值范围是0-360,S取值范围是(0%-100%),V取值范围是(0%-100%)。

    2.利用openCV中cvSplit函数的在选择图像IPL_DEPTH_32F类型时,H取值范围是0-360,S取值范围是0-1(0%-100%),V取值范围是0-1(0%-100%)。

    3.利用openCV中cvSplit函数的在选择图像IPL_DEPTH_8UC类型时,H取值范围是0-180,S取值范围是0-255,V取值范围是0-255。

    3.RGB转HSV

    3.1公式

    展开全文
  • 一、HSV颜色系统简介 二、HSV值对颜色的影响 三、HSV和RGB的互相转化 四、OpenCV中的HSV颜色体系 五、OpenCV实战——两种方法使用OpenCV进行颜色分割 六、inRange函数用法介绍 一、HSV颜色系统简介 HSV是一种...

    目录

    一、HSV颜色系统简介

    二、HSV值对颜色的影响

    三、HSV和RGB的互相转化

    四、OpenCV中的HSV颜色体系

    五、OpenCV实战——两种方法使用OpenCV进行颜色分割

    六、inRange函数用法介绍



    一、HSV颜色系统简介

    HSV是一种在人们生活中甚至更常用的颜色系统,在电视遥控器上、在画画的调色板中、在你用爱某艺视频调整亮度时都很常见,因为它更符合人们描述颜色的方式——是什么颜色、颜色有多深、颜色有多亮。

    H——Hue即色相,就是我们平时所说的红、绿,如果你分的更细的话可能还会有洋红、草绿等等;在HSV模型中,用度数来描述色相,其中红色对应0度,绿色对应120度,蓝色对应240度。

    S——Saturation即饱和度,色彩的深浅度(0-100%) ,对于一种颜色比如红色,我们可以用浅红——大红——深红——红得发紫等等语言来描述它(请原谅一个纯理科生的匮乏的颜色系统),对应在画水彩的时候即一种颜料加上不同分量的水形成不同的饱和度。

     V——Value即色调,纯度,色彩的亮度(0-100%) ,这个在调整屏幕亮度的时候比较常见。

    注:在模型2中:

    H是色彩点在对应圆形切面上与红色半径(对于H=0度)所形成的圆心角。

    V是色彩点所在圆形切面到圆锥顶点的距离。在顶面上V=1 顶点V=0

    S是色彩点到所在圆形切面圆心的距离与该圆半径的比例值,在圆锥表面上S=1,在圆心处S=0

     

    二、HSV值对颜色的影响

    如上图是H=120时的S—V平面,S和V值分别从左至右、从下至上由0增大至1。我们可以发现其规律:

    • 在图片的左侧S值为0,呈现不同程度的灰色,由V值决定。

    • 在图片的下侧V值为0,呈现出黑色。

    • 在图片的右上角S和V值都为1,呈现出纯色,其RGB值为(0, 255, 0)。

    因此对HSV我们的结论如下:

    当S=1 V=1时,H所代表的任何颜色被称为纯色;

    当S=0时,即饱和度为0,颜色最浅,最浅被描述为灰色(灰色也有亮度,黑色和白色也属于灰色),灰色的亮度由V决定,此时H无意义;

    当V=0时,颜色最暗,最暗被描述为黑色,因此此时H(无论什么颜色最暗都为黑色)和S(无论什么深浅的颜色最暗都为黑色)均无意义。

     

    三、HSV和RGB的互相转化

    RGB➡HSV

    1. V = max(R, G, B)/255.0f——亮度V就是RGB值中最大的那个值进行归一化。

    推论:纯色的RGB中肯定有一个是255。同时RGB值也不可能有3个255,因为3个255为白色,白色为对于任何色彩H,V=1而S=0时的产物。而V=1 S=0并不是纯色。同时如果V=0,那么RGB三者中的最大值是0,即GRB都为0,也就是说该像素是黑色。

    2. S = (max(R, G, B) - min(R, G, B))/(float)max(R, G, B)——饱和度S是RGB中最大值和最小值的差值与最大值的比值。

    推论:

    • 纯色(S=1 V=1)的RGB值中必定有一个0,因为当S=1,max(R, G, B) - min(R, G, B) == max(R, G, B),即RGBMin=0。这也说明了白色(RGB(255,255,255)并不是纯色)。

    • 当S=0时,RGBMax-RGBMin==0,即R==G==B,此时颜色呈不同程度的灰色(由白到黑,亮度由V而定,因为V=RGBMax*100/255,V越高,RGBMax==R==G==B就越高,灰色越亮))。这也可以从上面给出的矩形图看出。

    因此对于纯色来说,RGB中必有一个255和一个0。

    公式换算:

    HSV➡RGB



    四、OpenCV中的HSV颜色体系

    与上述HSV颜色系统不同的是,如果直接使用OpenCV中cvtColor函数,并设置参数为CV_BGR2HSV,那么所得的H、S、V值范围分别是[0,180),[0,255),[0,255),而非[0,360],[0,1],[0,1];这时我们可以查下面的表格来确定颜色的大致区间。

    代码如下:

    Mat src = imread("test.jpg");
    Mat hsv;
    cvtColor(src, hsv, CV_BGR2HSV); //直接转换
    cout<<hsv<<endl; //可以直接在控制台输出hsv查看结果

    从输出的结果来看,和我们上边所说的是相符的。

    另一种hsv方法——当我们想恢复到我们一开始介绍的体系时,我们只需要加一步——对像素的bgr进行归一化,再转到hsv时得到的结果就和我们介绍的就相同了。代码和输出结果如下

    Mat src = imread("test.jpg");
    Mat bgr;                                        //归一化后的RGB图片
    src.convertTo(bgr, CV_32FC3, 1.0 / 255.0);      //对每个像素进行归一化
    Mat hsv;
    cvtColor(bgr, hsv, CV_BGR2HSV);                 //向hsv空间转化
    cout<<hsv<<endl;

    此时输出结果范围和一开始所述就符合了。

     

    五、OpenCV实战——两种方法使用OpenCV进行颜色分割

    目标图像是自己用画图画的(超级丑):

    第一种方法——直接用OpenCV中的HSV体系,代码如下:

    #include<opencv2/core.hpp>
    #include<opencv2/highgui.hpp>
    #include<opencv2/imgproc.hpp>
    using namespace cv;
    #include<iostream>
    #include<string>
    using namespace std;
    //输入图像
    Mat img;
    //灰度值归一化
    Mat bgr;
    //HSV图像
    Mat hsv;
    //色相
    int hmin = 0;
    int hmin_Max = 360;
    int hmax = 180;
    int hmax_Max = 180;
    //饱和度
    int smin = 0;
    int smin_Max = 255;
    int smax = 255;
    int smax_Max = 255;
    //亮度
    int vmin = 106;
    int vmin_Max = 255;
    int vmax = 255;
    int vmax_Max = 255;
    //显示原图的窗口
    string windowName = "src";
    //输出图像的显示窗口
    string dstName = "dst";
    //输出图像
    Mat dst;
    //回调函数
    void callBack(int, void*)
    {
    	//输出图像分配内存
    	dst = Mat::zeros(img.size(), img.type());
    	//掩码
    	Mat mask;
    	inRange(hsv, Scalar(hmin, smin, vmin), Scalar(hmax, smax, vmax), mask);
    	//掩模到原图的转换
    	for (int r = 0; r < bgr.rows; r++)
    	{
    		for (int c = 0; c < bgr.cols; c++)
    		{
    			if (mask.at<uchar>(r, c) == 255)
    			{
    				dst.at<Vec3b>(r, c) = bgr.at<Vec3b>(r, c);
    			}
    		}
    	}
    	//输出图像
    	imshow(dstName, dst);
    	//保存图像
    	//dst.convertTo(dst, CV_8UC3, 255.0, 0);
    	imwrite("HSV_inRange.jpg", dst);
    }
    int main(int argc, char** argv)
    {
    	//输入图像
    	img = imread("test.jpg");
    	if (!img.data || img.channels() != 3)
    		return -1;
    	imshow(windowName, img);
    	bgr = img.clone();
    	//颜色空间转换
    	cvtColor(bgr, hsv, CV_BGR2HSV);
    	cout << hsv << endl;
    	//定义输出图像的显示窗口
    	namedWindow(dstName, WINDOW_GUI_EXPANDED);
    	//调节色相 H
    	createTrackbar("hmin", dstName, &hmin, hmin_Max, callBack);
    	createTrackbar("hmax", dstName, &hmax, hmax_Max, callBack);
    	//调节饱和度 S
    	createTrackbar("smin", dstName, &smin, smin_Max, callBack);
    	createTrackbar("smax", dstName, &smax, smax_Max, callBack);
    	//调节亮度 V
    	createTrackbar("vmin", dstName, &vmin, vmin_Max, callBack);
    	createTrackbar("vmax", dstName, &vmax, vmax_Max, callBack);
    	callBack(0, 0);
    	waitKey(0);
    	return 0;
    }

    由结果我们可以看出,当hmax从0依次变为30、60、90、120、150时,各种颜色区域不断被包括进去。

    第二种方法——先归一化后再转乘HSV体系,代码如下:请注意对Mat对象BGR和dst的图像类型设置细节以及at函数实例化参数的不同(Vec3f和Vec3b)。

    #include<opencv2/core.hpp>
    #include<opencv2/highgui.hpp>
    #include<opencv2/imgproc.hpp>
    using namespace cv;
    #include<iostream>
    #include<string>
    using namespace std;
    //输入图像
    Mat img;
    //灰度值归一化
    Mat bgr;
    //HSV图像
    Mat hsv;
    //色相
    int hmin = 0;
    int hmin_Max = 360;
    int hmax = 360;
    int hmax_Max = 360;
    //饱和度
    int smin = 0;
    int smin_Max = 255;
    int smax = 255;
    int smax_Max = 255;
    //亮度
    int vmin = 106;
    int vmin_Max = 255;
    int vmax = 250;
    int vmax_Max = 255;
    //显示原图的窗口
    string windowName = "src";
    //输出图像的显示窗口
    string dstName = "dst";
    //输出图像
    Mat dst;
    //回调函数
    void callBack(int, void*)
    {
    	//输出图像分配内存
    	dst = Mat::zeros(img.size(), CV_32FC3);
    	//掩码
    	Mat mask;
    	inRange(hsv, Scalar(hmin, smin / float(smin_Max), vmin / float(vmin_Max)), Scalar(hmax, smax / float(smax_Max), vmax / float(vmax_Max)), mask);
    	//只保留
    	for (int r = 0; r < bgr.rows; r++)
    	{
    		for (int c = 0; c < bgr.cols; c++)
    		{
    			if (mask.at<uchar>(r, c) == 255)
    			{
    				dst.at<Vec3f>(r, c) = bgr.at<Vec3f>(r, c);
    			}
    		}
    	}
    	//输出图像
    	imshow(dstName, dst);
    	//保存图像
    	dst.convertTo(dst, CV_8UC3, 255.0, 0);
    	imwrite("HSV_inRange.jpg", dst);
    }
    int main(int argc, char*argv[])
    {
    	//输入图像
    	img = imread(argv[1], IMREAD_COLOR);
    	if (!img.data || img.channels() != 3)
    		return -1;
    	imshow(windowName, img);
    	//彩色图像的灰度值归一化
    	img.convertTo(bgr, CV_32FC3, 1.0 / 255, 0);
    	//颜色空间转换
    	cvtColor(bgr, hsv, COLOR_BGR2HSV);
    	//定义输出图像的显示窗口
    	namedWindow(dstName, WINDOW_GUI_EXPANDED);
    	//调节色相 H
    	createTrackbar("hmin", dstName, &hmin, hmin_Max, callBack);
    	createTrackbar("hmax", dstName, &hmax, hmax_Max, callBack);
    	//调节饱和度 S
    	createTrackbar("smin", dstName, &smin, smin_Max, callBack);
    	createTrackbar("smax", dstName, &smax, smax_Max, callBack);
    	//调节亮度 V
    	createTrackbar("vmin", dstName, &vmin, vmin_Max, callBack);
    	createTrackbar("vmax", dstName, &vmax, vmax_Max, callBack);
    	callBack(0, 0);
    	waitKey(0);
    	return 0;
    }
    

    代码来自https://blog.csdn.net/zhangping1987/article/details/74452562

    六、inRange函数用法介绍

    void inRange(InputArray src, InputArray lowerb, InputArray upperb, OutputArray dst);

    通俗的来讲,这个函数就是判断src中每一个像素是否在[lowerb,upperb]之间,注意集合的开闭。如果结果为是,那么在dst相应像素位置填上255,反之则是0。一般我们把dst当作一个mask来用,如上例所示。

    官方的解释为:Checks if array elements lie between the elements of two other arrays.即检查数组元素是否在另外两个数组元素值之间。这里的数组通常也就是矩阵Mat或向量。要特别注意的是:该函数输出的dst是一幅二值化之后的图像。

    • 针对单通道图像

    dst(I) = lowerb(I)0 ≤ src(I)0 < upperb(I)0
    即,如果一幅灰度图像的某个像素的灰度值在指定的高、低阈值范围之内,则在dst图像中令该像素值为255,否则令其为0,这样就生成了一幅二值化的输出图像。

    • 针对三通道图像

    dst(I) = lowerb(I)0 ≤ src(I)0 < upperb(I)0 ∧ lowerb(I)1 ≤ src(I)1 < upperb(I)1 ∧lowerb(I)2 ≤ src(I)2 < upperb(I)2
    即,每个通道的像素值都必须在规定的阈值范围内!

     

    转载请注明出处。

    展开全文
  • HSV颜色空间

    千次阅读 2014-08-08 12:06:39
    1. RGB模型。 三维坐标: ...原点到白色顶点的中轴线是灰度线,r、g、b三分量相等,强度可以由三分量的向量表示。...色彩变化: 三个坐标轴RGB最大分量顶点与黄紫青YMC色顶点的连线 ...明暗变化:中轴线的点的位置,到...

    1. RGB模型。

    三维坐标:


    原点到白色顶点的中轴线是灰度线,r、g、b三分量相等,强度可以由三分量的向量表示。

    用RGB来理解色彩、深浅、明暗变化:

    色彩变化: 三个坐标轴RGB最大分量顶点与黄紫青YMC色顶点的连线

    深浅变化:RGB顶点和CMY顶点到原点和白色顶点的中轴线的距离

    明暗变化:中轴线的点的位置,到原点,就偏暗,到白色顶点就偏亮


    PS: 光学的分析

    三原色RGB混合能形成其他的颜色,并不是说物理上其他颜色的光是由三原色的光混合形成的,每种单色光都有自己独特的光谱,如黄光是一种单色光,但红色与绿色混合能形成黄色,原因是人的感官系统所致,与人的生理系统有关。

    只能说“将三原色光以不同的比例复合后,对人的眼睛可以形成与各种频率的可见光等效的色觉。”


    2. HSV模型

    HSV(hue,saturation,value)颜色空间的模型对应于圆柱坐标系中的一个圆锥形子集,圆锥的顶面对应于V=1。

    倒锥形模型:

          


    这个模型就是按色彩、深浅、明暗来描述的。

    H是色彩

    S是深浅, S = 0时,只有灰度

    V是明暗,表示色彩的明亮程度,但与光强无直接联系,(意思是有一点点联系吧)。


    3. RGB与HSV的联系

    从上面的直观的理解,把RGB三维坐标的中轴线立起来,并扁化,就能形成HSV的锥形模型了。

    但V与强度无直接关系,因为它只选取了RGB的一个最大分量。而RGB则能反映光照强度(或灰度)的变化。

    v = max(r, g, b)

    由RGB到HSV的转换:


    "  HSV对用户来说是一种直观的颜色模型。我们可以从一种纯色彩开始,即指定色彩角H,并让V=S=1,然后我们可以通过向其中加入黑色和白色来得到我们需要的颜色。增加黑色可以减小V而S不变,同样增加白色可以减小S而V不变。例如,要得到深蓝色,V=0.4 S=1 H=240度。要得到淡蓝色,V=1 S=0.4 H=240度。" --百度百科


    4. HSV在图像处理应用


    HSV在用于指定颜色分割时,有比较大的作用。

    H和S分量代表了色彩信息。

    分割应用:

          用H和S分量来表示颜色距离,颜色距离指代表两种颜色之间的数值差异
         Androutsos等人通过实验对HSV颜色空间进行了大致划分,亮度大于75%并且饱和度大于20%为亮彩色区域,亮度小于25%为黑色区域,亮度大于75%并且饱和度小于20%为白色区域,其他为彩色区域。

       对于不同的彩色区域,混合H与S变量,划定阈值,即可进行简单的分割。


    HSV的去阴影算法:

    Improving shadow suppression in moving object detection with HSV color information

    展开全文
  • HSV颜色识别-HSV基本颜色分量范围

    万次阅读 2019-03-07 09:09:54
    一般对颜色空间的图像进行有效处理都是在HSV空间进行的,然后对于基本色中对应的HSV分量需要给定一个严格的范围,下面是通过实验计算的模糊范围(准确的范围在网上都没有给出)。 H: 0—180 S: 0—255 V: 0—255 ...

    一般对颜色空间的图像进行有效处理都是在HSV空间进行的,然后对于基本色中对应的HSV分量需要给定一个严格的范围,下面是通过实验计算的模糊范围(准确的范围在网上都没有给出)。

    H:  0 — 180

    S:  0 — 255

    V:  0 — 255

    此处把部分红色归为紫色范围:

     

     

     

     

     

    目前在计算机视觉领域存在着较多类型的颜色空间(color space)。HSL和HSV是两种最常见的圆柱坐标表示的颜色模型,它重新影射了RGB模型,从而能够视觉上比RGB模型更具有视觉直观性。

    HSV颜色空间 
    HSV(hue,saturation,value)颜色空间的模型对应于圆柱坐标系中的一个圆锥形子集,圆锥的顶面对应于V=1. 它包含RGB模型中的R=1,G=1,B=1 三个面,所代表的颜色较亮。色彩H由绕V轴的旋转角给定。红色对应于 角度0° ,绿色对应于角度120°,蓝色对应于角度240°。在HSV颜色模型中,每一种颜色和它的补色相差180° 。 饱和度S取值从0到1,所以圆锥顶面的半径为1。HSV颜色模型所代表的颜色域是CIE色度图的一个子集,这个 模型中饱和度为百分之百的颜色,其纯度一般小于百分之百。在圆锥的顶点(即原点)处,V=0,H和S无定义, 代表黑色。圆锥的顶面中心处S=0,V=1,H无定义,代表白色。从该点到原点代表亮度渐暗的灰色,即具有不同 灰度的灰色。对于这些点,S=0,H的值无定义。可以说,HSV模型中的V轴对应于RGB颜色空间中的主对角线。 在圆锥顶面的圆周上的颜色,V=1,S=1,这种颜色是纯色。HSV模型对应于画家配色的方法。画家用改变色浓和 色深的方法从某种纯色获得不同色调的颜色,在一种纯色中加入白色以改变色浓,加入黑色以改变色深,同时 加入不同比例的白色,黑色即可获得各种不同的色调。 

     

    HSI颜色空间 
    HSI色彩空间是从人的视觉系统出发,用色调(Hue)、色饱和度(Saturation或Chroma)和亮度 (Intensity或Brightness)来描述色彩。HSI色彩空间可以用一个圆锥空间模型来描述。用这种 描述HIS色彩空间的圆锥模型相当复杂,但确能把色调、亮度和色饱和度的变化情形表现得很清楚。 通常把色调和饱和度通称为色度,用来表示颜色的类别与深浅程度。由于人的视觉对亮度的敏感 程度远强于对颜色浓淡的敏感程度,为了便于色彩处理和识别,人的视觉系统经常采用HSI色彩空间, 它比RGB色彩空间更符合人的视觉特性。在图像处理和计算机视觉中大量算法都可在HSI色彩空间中 方便地使用,它们可以分开处理而且是相互独立的。因此,在HSI色彩空间可以大大简化图像分析 和处理的工作量。HSI色彩空间和RGB色彩空间只是同一物理量的不同表示法,因而它们之间存在着 转换关系。

    HSI 色彩模型是从人的视觉系统出发,用 H 代表色相 (Hue)、S 代表饱和度 (Saturation) 和 I 代表亮度 (Intensity) 来描述色彩。饱和度与颜色的白光光量刚好成反比,它可以说是一个颜色鲜明与否的指标。因此如果我们在显示器上使用 HIS 模型来处理图像,将能得到较为逼真的效果。 
    色相 (Hue):指物体传导或反射的波长。更常见的是以颜色如红色,橘色或绿色来辨识,取 0 到 360 度的数值来衡量。 
    饱和度 (Saturation):又称色度,是指色彩的强度或纯度。饱和度代表灰色与色调的比例,并以 0% (灰色) 到 100% (完全饱和) 来衡量。 
    亮度 (Intensity):是指颜色的相对明暗度,通常以 0% (黑色) 到 100% (白色) 的百分比来衡量。

     

    HSL代表色调(Hue),饱和度(Saturation)和亮度(Lightness),通常也称为HLS。HSV代表色调,饱和度和值(Value)。注意HSL 和HSV的两个H的含义是相同的,而饱和度的定义是不同的,虽然都叫饱和度,从后面的定义可以看出二者的不同。
    HSL 和 HSV 二者都把颜色描述在圆柱体内的点,这个圆柱的中心轴取值为自底部的黑色到顶部的白色而在它们中间是的灰色,绕这个轴的角度对应于“色相”,到这个轴的距离对应于“饱和度”,而沿着这个轴的距离对应于“亮度”,“色调”或“明度”。 HSV 以人类更熟悉的方式封装了关于颜色的信息:“这是什么颜色?深浅如何?明暗如何?”。HSL 颜色空间类似于 HSV,在某些方面甚至比它还好。HSL的模型为双圆锥形状。
    这两种表示在用目的上类似,但在方法上有区别。二者在数学上都是圆柱,但 HSV(色相,饱和度,明度)在概念上可以被认为是颜色的倒圆锥体(黑点在下顶点,白色在上底面圆心),HSL 在概念上表示了一个双圆锥体和圆球体(白色在上顶点,黑色在下顶点,最大横切面的圆心是半程灰色)。HSV 模型在 1978 年由埃尔维?雷?史密斯创立。下图给出了HSL和HSV的圆柱模型。

    在圆锥上,角度代表色调H,饱和度S表示为点到中心竖线的距离,而亮度或者值V用中心竖线表示。红色的角度为0度,依次为黄色、绿色、青色、蓝色、橙色。连续两种颜色的角度相差60度。

    展开全文
  • HSV取值范围

    万次阅读 2016-12-21 11:56:56
    这次我主要说说颜色空间,包括三个方面:RGB颜色空间,HSV颜色空间以及颜色空间的转换 RGB颜色空间介绍: 1:RGB颜色空间简介  三基色原理:大多数的颜色可以通过红、绿、蓝三色按照不同的比例合成产生,同样...
  • HSV图像查看器

    2020-07-27 16:14:01
    1、这是一款HSV图像查看器; 2、内置6个滑动条,可以调整H、S、V滑动条,查看相应ROI变化。
  • RGB与HSV的深层理解(详细)

    千次阅读 2019-06-01 14:15:09
    最近准备研究计算机视觉领域,那么图片处理和人脸识别是其中一个模块,今天在学习OpenCV的时候,了解了一个新的模型HSV颜色模型,他与RNG色彩模型是一样的东西,之前了解一些RGB颜色模型,但是我觉得自己没有完全...
  • HSV

    2018-02-01 17:22:31
    色调H 用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。它们的补色是:黄色为60°,青色为180°,品红为300°; ...饱和度S表示颜色接近光谱色的程度。...
  • 由RGB到HSV颜色空间的理解

    万次阅读 多人点赞 2012-11-21 09:36:22
    2. HSV模型 3. 如何理解RGB与HSV的联系 4. HSV在图像处理中的应用 5. opencv中RGB-->HSV实现 在图像处理中,最常用的颜色空间是RGB模型,常用于颜色显示和图像处理,三维坐标的模型形式,非常容易被理解。 ...
  • hsv与hsi区别

    万次阅读 2014-06-01 12:57:48
    hsv里面的v指的是RGB里面的最大的值,v = max(max(r,g),b); 而HSI的I是平均值,I=(r+g+b) / 3; 另外两个分量应该是一样的,如果只是需要h或者s的话可以用matlab自带的rgb2hsv了。
  • Python视觉处理(四)HSV处理

    万次阅读 2017-10-22 15:40:44
    很多时候,当图像中存在色彩时,我们用用RGB图像处理得不到想要的结果时,就可以把图像转化成HSV图像,再加以处理,这样处理起来获取方便了很多。当然,在特定的环境中,我们不知道HSV的范围,这个时候可以测试一下...
  • 通过HSV实现对图像亮度的调整

    千次阅读 2017-02-13 20:50:41
    调整V通道,改变图片亮度
  • 【opencv】HSV颜色值对照表

    千次阅读 2019-12-24 18:20:38
  • RGB图片转换为HSV图像

    千次阅读 2018-07-26 10:29:29
    1、程序 clear all; aaa = imread('timg.jpg');...bbb = rgb2hsv(aaa); %x = im2bw(aaa,0.45); subplot(1,2,1), imshow(aaa), title('RGB图'); subplot(1,2,2), imshow(bbb), title('HSV图'); 2、效果
  • 2、HSV:色度、饱和度、亮度 3、YUV:亮度、色度   cvtColor void cvtColor(InputArray src, OutputArray dst, int code, int dstCn=0)  src:原图像  dst:输出图像  code:转换模式,有CV_RGB2GRAY CV_...
  • MATLAB rgb转hsv后h通道取值含义

    万次阅读 热门讨论 2017-12-29 11:51:22
    MATLAB hsv颜色空间理解
  • RGB与HSV的转换 颜色相近颜色距离的概念 具体计算公式以及示例代码RGB与HSV的转换具体转换实现参考百度HSV基本概念。 各种语言的颜色API应该都提供有相关函数,直接把color转换成HSV。//android color library ...
  • 本文实现了本地图片读取显示,RGB到HSV颜色空间的转换,HSV三个通道的分离与显示。直观观察HSV三个通道的值,分析其特点。
  • Halcon中RGB转HSV的方法

    千次阅读 2016-11-19 16:04:08
    Halcon中将RGB转为HSV的方法分为两步:1是先将一张3通道的彩色图分割为3个单通到的单色图;2是将此3个单色图转换为HSV色差空间中的图。
  • 【opencv】目标识别——HSV颜色识别

    万次阅读 多人点赞 2017-06-13 10:23:56
    首先解释为什么不在RGB中设置范围寻找物体信息,而是在HSV中: 因为RGB通道并不能很好地反映出物体具体的颜色信息 , 而相对于RGB空间,HSV空间能够非常直观的表达色彩的明暗,色调,以及鲜艳程度,方便进行颜色之间...
1 2 3 4 5 ... 20
收藏数 16,256
精华内容 6,502
关键字:

hsv