2012-10-10 79 views
7

我有一个JPEG和一个面具。我想创建一个带有三个JPEG通道的PNG,alpha通道应该是Mask。我如何通过OpenCV实现这一目标?OpenCV 2.4 JPEG到alpha通道PNG

问候

回答

6

谢谢您的回答,我找到了第二个解决方案:

cv::Mat transparent(height, width, CV_8UC4); 
cv::Mat srcImg[] = {JPEG_img, alpha_Mask}; 
int from_to[] = { 0,0, 1,1, 2,2, 3,3 }; 
cv::mixChannels(srcImg, 2, &transparent, 1, from_to, 4); 

这完美的作品,不知道哪种解决方案更好。

+2

的确,在回答之前我很懒惰地检查mixChannels文档,拆分/合并非常简单。但mixChannels可能更快,因为你不需要临时矩阵 – remi

+1

是的,你可能是对的,所以我会将这个答案标记为正确的。谢谢 – Maecky

+4

该死!我的观点! – remi

8
std::vector<cv::Mat> channels; 
cv::split(jpgImage, channels); 
channels.push_back(mask); 
cv::Mat bgraImage; 
cv::merge(channels, bgrAImage); 

的文档split and merge functions