码迷,mamicode.com
首页 > 其他好文 > 详细

颜色空间转换 RGB到HSV

时间:2021-04-20 15:09:32      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:连续   不容易   转换   convert   处理   cpp   tab   max   hsv   

参考链接:

https://www.rapidtables.com/convert/color/rgb-to-hsv.html

https://zhuanlan.zhihu.com/p/67930839

在缺陷检测时,直接使用RGB值检测一些有色差的缺陷时,往往不容易检测,因为RGB值的变化在肉眼上不一定也是连续变化的。

我们可以考虑将RGB颜色空间转换到HSV空间后再进行处理。

void RGB2HSV(UINT8 r, UINT8 g, UINT8 b, double& h, double& s, double& v)
{
	UINT8 cmax = r;
	UINT8 cmin = r;
	if (r > g)
	{
		cmax = r;
		cmin = g;
	}
	else
	{
		cmax = g;
		cmin = r;
	}
	if (cmax < b)
	{
		cmax = b;
	}
	if (cmin > b)
	{
		cmin = b;
	}
	UINT8 delta = cmax - cmin;
	h = 0;
	if (delta != 0)
	{
		if (cmax == r)
		{
			if (g > b)
			{
				h = 60 * ((g - b) * 1.0 / delta);
			}
			else
			{
				h = 60 * ((g - b) * 1.0 / delta + 6);
			}
		}
		else if (cmax == g)
		{
			h = 60 * ((b - r) * 1.0 / delta + 2);
		}
		else
		{
			h = 60 * ((r - g) * 1.0 / delta + 4);
		}
	}

	s = 0;
	if (cmax != 0)
	{
		s = delta * 1.0 / cmax;
	}

	v = cmax * 1.0 / 255;
}

  

 

颜色空间转换 RGB到HSV

标签:连续   不容易   转换   convert   处理   cpp   tab   max   hsv   

原文地址:https://www.cnblogs.com/merlinzjl/p/14673696.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!