RGB是以红,绿,蓝为三基色的颜色空间。之所以选择这三种主颜色是因为这三种颜色组合起来可以形成大量不同颜色。实际上,人类视觉系统也是基于视锥细胞对于红绿蓝光谱的三基色的感知。在数字图像中的颜色空间通常是不变的,这是因为它们获得光线的方法是默认的。捕捉的光线都经过红绿蓝滤波器。另外,在数字图像中,红绿蓝信道中的颜色等量时,就会获得一个从黑(0,0,0)到白(255,255,255)的灰度级。
但是,使用RGB空间不太好计算相似两颜色之间的距离。实际上,RGB不是一个感知均匀的颜色空间。而CIE L*a*b*却是一种感知均匀颜色空间,通过它们之间的转换,两种颜色之间的欧拉距离对于测量它们是否视觉相似是非常有意义的。这一节我们就说一下两种颜色空间的转换。
我们更改一下上一节的列子。在转换颜色空间时可以使用OpenCV自带的函数cv::cvtColor。
cv::Mat ColorDetector::process(co