merlinzjl

导航

颜色空间转换 RGB到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;
}

  

 

posted on 2021-04-18 15:58  merlinzjl  阅读(164)  评论(0编辑  收藏  举报