7

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

问候

4

2 回答 2

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

拆分和合并功能的文档

于 2012-10-10T14:36:05.057 回答
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 );

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

于 2012-10-10T15:06:33.263 回答