CvtColor
色彩空间转换 void cvCvtColor( const CvArr* src, CvArr* dst, int code );
函数 cvCvtColor 将输入图像从一个色彩空间转换为另外一个色彩空间。函数忽略 IplImage 头中定义的 colorModel 和 channelSeq 域,所以输入图像的色彩空间应该正确指定 (包括通道的顺序,对RGB空间而言,BGR 意味着布局为 B0 G0 R0 B1 G1 R1 ... 层叠的 24-位格式,而 RGB 意味着布局为 R0 G0 B0 R1 G1 B1 ... 层叠的24-位格式. 函数做如下变换: RGB 空间内部的变换,如增加/删除 alpha 通道,反相通道顺序,到16位 RGB彩色或者15位RGB彩色的正逆转换(Rx5:Gx6:Rx5),以及到灰度图像的正逆转换,使用: RGB[A]->Gray: Y=0.212671*R + 0.715160*G + 0.072169*B + 0*A 所有可能的图像色彩空间的相互变换公式列举如下: RGB<=>XYZ (CV_BGR2XYZ, CV_RGB2XYZ, CV_XYZ2BGR, CV_XYZ2RGB): |X| |0.412411 0.357585 0.180454| |R| RGB<=>YCrCb (CV_BGR2YCrCb, CV_RGB2YCrCb, CV_YCrCb2BGR, CV_YCrCb2RGB) Y=0.299*R + 0.587*G + 0.114*B RGB=>HSV (CV_BGR2HSV,CV_RGB2HSV) V=max(R,G,B) RGB=>Lab (CV_BGR2Lab, CV_RGB2Lab) |X| |0.433910 0.376220 0.189860| |R/255| Bayer=>RGB (CV_BayerBG2BGR, CV_BayerGB2BGR, CV_BayerRG2BGR, CV_BayerGR2BGR, CV_BayerBG2RGB, CV_BayerRG2BGR, CV_BayerGB2RGB, CV_BayerGR2BGR, CV_BayerRG2RGB, CV_BayerBG2BGR, CV_BayerGR2RGB, CV_BayerGB2BGR) Bayer 模式被广泛应用于 CCD 和 CMOS 摄像头. 它允许从一个单独平面中得到彩色图像,该平面中的 R/G/B 象素点被安排如下:
对像素输出的RGB份量由该像素的1、2或者4邻域中具有相同颜色的点插值得到。以上的模式可以通过向左或者向上平移一个像素点来作一些修改。转换 常量CV_BayerC1C22{RGB|RGB}中的两个字母C1和C2表示特定的模式类型:颜色份量分别来自于第二行,第二和第三列。比如说,上述的 模式具有很流行的"BG"类型。 【以上引自http://www./index.php/Cv%E5%9B%BE%E5%83%8F%E5%A4%84%E7%90%86#CvtColor】【附:opencv库中附带源码】 /* Constants for color conversion */ #define CV_BGR2BGRA 0 #define CV_RGB2RGBA CV_BGR2BGRA #define CV_BGRA2BGR 1 #define CV_RGBA2RGB CV_BGRA2BGR #define CV_BGR2RGBA 2 #define CV_RGB2BGRA CV_BGR2RGBA #define CV_RGBA2BGR 3 #define CV_BGRA2RGB CV_RGBA2BGR #define CV_BGR2RGB 4 #define CV_RGB2BGR CV_BGR2RGB #define CV_BGRA2RGBA 5 #define CV_RGBA2BGRA CV_BGRA2RGBA #define CV_BGR2GRAY 6 #define CV_RGB2GRAY 7 #define CV_GRAY2BGR 8 #define CV_GRAY2RGB CV_GRAY2BGR #define CV_GRAY2BGRA 9 #define CV_GRAY2RGBA CV_GRAY2BGRA #define CV_BGRA2GRAY 10 #define CV_RGBA2GRAY 11 #define CV_BGR2BGR565 12 #define CV_RGB2BGR565 13 #define CV_BGR5652BGR 14 #define CV_BGR5652RGB 15 #define CV_BGRA2BGR565 16 #define CV_RGBA2BGR565 17 #define CV_BGR5652BGRA 18 #define CV_BGR5652RGBA 19 #define CV_GRAY2BGR565 20 #define CV_BGR5652GRAY 21 #define CV_BGR2BGR555 22 #define CV_RGB2BGR555 23 #define CV_BGR5552BGR 24 #define CV_BGR5552RGB 25 #define CV_BGRA2BGR555 26 #define CV_RGBA2BGR555 27 #define CV_BGR5552BGRA 28 #define CV_BGR5552RGBA 29 #define CV_GRAY2BGR555 30 #define CV_BGR5552GRAY 31 #define CV_BGR2XYZ 32 #define CV_RGB2XYZ 33 #define CV_XYZ2BGR 34 #define CV_XYZ2RGB 35 #define CV_BGR2YCrCb 36 #define CV_RGB2YCrCb 37 #define CV_YCrCb2BGR 38 #define CV_YCrCb2RGB 39 #define CV_BGR2HSV 40 #define CV_RGB2HSV 41 #define CV_BGR2Lab 44 #define CV_RGB2Lab 45 #define CV_BayerBG2BGR 46 #define CV_BayerGB2BGR 47 #define CV_BayerRG2BGR 48 #define CV_BayerGR2BGR 49 #define CV_BayerBG2RGB CV_BayerRG2BGR #define CV_BayerGB2RGB CV_BayerGR2BGR #define CV_BayerRG2RGB CV_BayerBG2BGR #define CV_BayerGR2RGB CV_BayerGB2BGR #define CV_BGR2Luv 50 #define CV_RGB2Luv 51 #define CV_BGR2HLS 52 #define CV_RGB2HLS 53 #define CV_HSV2BGR 54 #define CV_HSV2RGB 55 #define CV_Lab2BGR 56 #define CV_Lab2RGB 57 #define CV_Luv2BGR 58 #define CV_Luv2RGB 59 #define CV_HLS2BGR 60 #define CV_HLS2RGB 61 #define CV_COLORCVT_MAX 100 |
|