标签:连续 不容易 转换 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;
}
标签:连续 不容易 转换 convert 处理 cpp tab max hsv
原文地址:https://www.cnblogs.com/merlinzjl/p/14673696.html