PNG图像相比RGB图像最大的优势在于可以增加一个alpha通道表示透明度,老版本的OpenCV(2.3之前)无法直接读取alpha通道,需要修改源代码。
OpenCV2.3之后,可以用简单的CV_LOAD_IMAGE_UNCHANGED选项来加载图像。
IplImage* testPNG = cvLoadImage("test.png", CV_LOAD_IMAGE_UNCHANGED);
这时候通过查询testPNG的nChannels来确定是否包含alpha通道,如果channels数目等于4,则表明成功读取了alpha通道,通道的顺序是BGR-alpha.
通过cvConvertImage函数可以将RGB-alpha图像转为RGB三通道图像或者获取alpha通道掩模,选项为CV_RGBA2RGB和CV_RGBA2GRAY。