参见 cv::cvtColor 和 cv::ColorConversionCodes
- 待办事项
- 记录其他转换模式
RGB <-> 灰度
RGB空间内的转换,例如添加/移除alpha通道、反转通道顺序、转换为/从16位RGB颜色(R5:G6:B5或R5:G5:B5),以及使用以下公式进行灰度转换/从灰度转换
和
从RGB图像到灰度的转换使用以下代码:
cvtColor(src, bwsrc, cv::COLOR_RGB2GRAY);
更高级的通道重新排序也可以使用 cv::mixChannels 完成。
- 另请参见
- cv::COLOR_BGR2GRAY,cv::COLOR_RGB2GRAY,cv::COLOR_GRAY2BGR,cv::COLOR_GRAY2RGB
RGB <-> CIE XYZ.Rec 709,白点为D65
、和覆盖整个值范围(对于浮点图像,可能超过1)。
- 另请参见
- cv::COLOR_BGR2XYZ,cv::COLOR_RGB2XYZ,cv::COLOR_XYZ2BGR,cv::COLOR_XYZ2RGB
RGB <-> YCrCb JPEG(或YCC)
其中
Y、Cr和Cb覆盖整个值范围。
- 另请参见
- cv::COLOR_BGR2YCrCb,cv::COLOR_RGB2YCrCb,cv::COLOR_YCrCb2BGR,cv::COLOR_YCrCb2RGB
RGB <-> 带下采样的YUV
仅支持8位值。系数对应于BT.601标准,结果值为Y [16, 235],U和V [16, 240],以128为中心。
支持两种下采样方案:4:2:0(Fourcc代码NV12、NV21、YV12、I420及其同义词)和4:2:2(Fourcc代码UYVY、YUY2、YVYU及其同义词)。
在这两种下采样方案中,都为每个像素写入Y值,因此Y平面实际上是源图像的缩放和偏差灰度版本。
在4:2:0方案中,U和V值在2x2方块上取平均值,即每4个像素只保存1个U值和1个V值。U和V值交错保存到单独的平面(NV12、NV21)或两个单独的半平面(YV12、I420)中。
在4:2:2方案中,U和V值在每对像素上水平取平均值,即每2个像素只保存1个U值和1个V值。根据其Fourcc代码,U和V值与两个像素的Y值交错保存。
请注意,出于速度或兼容性目的,不同的转换使用不同的精度执行。例如,RGB到YUV 4:2:2使用14位定点算术进行转换,而其他转换使用20位。
- 另请参见
- cv::COLOR_YUV2RGB_NV12,cv::COLOR_YUV2RGBA_YUY2,cv::COLOR_BGR2YUV_YV12等等
RGB <-> HSV
对于8位和16位图像,R、G和B转换为浮点格式,并缩放以适应0到1的范围。
如果,则。输出时,,。
然后将值转换为目标数据类型
- 8位图像:
- 16位图像:(目前不支持)
- 32位图像:H、S和V保持不变
- 另请参见
- cv::COLOR_BGR2HSV,cv::COLOR_RGB2HSV,cv::COLOR_HSV2BGR,cv::COLOR_HSV2RGB
RGB <-> HLS
对于8位和16位图像,R、G和B转换为浮点格式,并缩放以适应0到1的范围。
如果 ,则 。输出结果为 , , 。
然后将值转换为目标数据类型
- 8位图像:
- 16位图像:(目前不支持)
- 32位图像:H、S、V 保持不变
- 另请参见
- cv::COLOR_BGR2HLS,cv::COLOR_RGB2HLS,cv::COLOR_HLS2BGR,cv::COLOR_HLS2RGB
RGB <-> CIE L*a*b*
对于8位和16位图像,R、G和B转换为浮点格式,并缩放以适应0到1的范围。
其中
和
输出结果为 , , 。然后将这些值转换为目标数据类型。
- 8位图像:
- 16位图像:(目前不支持)
- 32位图像:L、a 和 b 保持不变
- 另请参见
- cv::COLOR_BGR2Lab,cv::COLOR_RGB2Lab,cv::COLOR_Lab2BGR,cv::COLOR_Lab2RGB
RGB <-> CIE L*u*v*
对于8位和16位图像,R、G和B将转换为浮点格式,并缩放以适应0到1的范围。
输出结果为 , , 。
然后将值转换为目标数据类型
- 8位图像:
- 16位图像:(目前不支持)
- 32位图像:L、u 和 v 保持不变
注意,当将整数Luv图像转换为RGB时,中间X、Y和Z值将被截断到范围内以适应白点限制。这可能会导致对具有奇数XYZ值的颜色的表示不正确。
上述将RGB转换为各种颜色空间的公式取自网络上的多个来源,主要来自Charles Poynton的网站 http://www.poynton.com/ColorFAQ.html
- 另请参见
- cv::COLOR_BGR2Luv,cv::COLOR_RGB2Luv,cv::COLOR_Luv2BGR,cv::COLOR_Luv2RGB
Bayer -> RGB
拜耳模式广泛用于CCD和CMOS相机。它使您可以从单个平面获得彩色图像,其中R、G和B像素(特定组件的传感器)交错排列如下:
拜耳模式(BGGR、GBRG、GRGB、RGGB)
像素的输出RGB分量通过对具有相同颜色的像素的1、2或4个相邻像素进行插值获得。
- 注意
- 有关OpenCV拜耳模式命名与经典拜耳模式命名之间对应关系的信息,请参见以下内容。
拜耳模式
上述模式有几种修改方法,可以通过将模式向左移动一个像素和/或向上移动一个像素来实现。转换常量CV_Bayer 2BGR和CV_Bayer 2RGB中的两个字母和表示特定的模式类型。这些是来自第二行、第二列和第三列的组件。例如,上述模式具有非常流行的“BG”类型。
- 另请参见
- cv::COLOR_BayerRGGB2BGR,cv::COLOR_BayerGRBG2BGR,cv::COLOR_BayerBGGR2BGR,cv::COLOR_BayerGBRG2BGR,cv::COLOR_BayerRGGB2RGB,cv::COLOR_BayerGRBG2RGB,cv::COLOR_BayerBGGR2RGB,cv::COLOR_BayerGBRG2RGB cv::COLOR_BayerBG2BGR,cv::COLOR_BayerGB2BGR,cv::COLOR_BayerRG2BGR,cv::COLOR_BayerGR2BGR,cv::COLOR_BayerBG2RGB,cv::COLOR_BayerGB2RGB,cv::COLOR_BayerRG2RGB,cv::COLOR_BayerGR2RGB