OpenCV 2.4使用alpha通道将Jpeg转换为PNG

Mae*_*cky 7 c++ opencv

我有一个JPEG和一个面具.我想用三个JPEG通道创建一个PNG,alpha通道应该是Mask.我怎样才能通过OpenCV实现这一目标?

问候

rem*_*emi 8

std::vector<cv::Mat> channels;
cv::split(jpgImage, channels);
channels.push_back(mask);
cv::Mat bgraImage;
cv::merge(channels, bgrAImage);
Run Code Online (Sandbox Code Playgroud)

拆分和合并功能的文档


Mae*_*cky 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 );
Run Code Online (Sandbox Code Playgroud)

这很完美,不确定哪种解决方案更好.

  • 事实上,在回答之前,我有点懒于检查mixChannels文档,拆分/合并很简单.但mixChannels可能更快,因为你不需要临时矩阵 (2认同)