参考链接:
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; }