Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

OpenCV 2.4 Jpeg to PNG with alpha channel

Tags:

c++

opencv

I have a JPEG and a Mask. I want to create a PNG with the three JPEG channels and the alpha channel should be the Mask. How can I achieve this with OpenCV?

Regards

like image 913
Maecky Avatar asked Oct 10 '12 13:10

Maecky


2 Answers

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

Documentation for split and merge functions

like image 175
remi Avatar answered Nov 18 '22 13:11

remi


Thanks for your answer, I found a second solution:

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 );

This works perfect, not sure which solution is better.

like image 44
Maecky Avatar answered Nov 18 '22 15:11

Maecky