2012-10-10 35 views
7

Tôi có một ảnh JPEG và Mặt nạ. Tôi muốn tạo một PNG với ba kênh JPEG và kênh alpha phải là Mặt nạ. Làm thế nào tôi có thể đạt được điều này với OpenCV?OpenCV 2.4 Jpeg tới PNG với kênh alpha

Trân

Trả lời

6

Cám ơn câu trả lời của bạn, tôi tìm thấy một giải pháp thứ hai:

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

này hoạt động hoàn hảo, không chắc chắn mà giải pháp là tốt hơn.

+2

Thật vậy, tôi là kinda lười biếng để kiểm tra tài liệu mixChannels trước khi trả lời, tách/hợp nhất là đơn giản. Nhưng mixChannels có lẽ nhanh hơn, vì bạn không cần các ma trận tạm thời – remi

+1

Có, bạn có lẽ đúng, vì vậy tôi sẽ đánh dấu câu trả lời này là câu trả lời đúng. Cảm ơn – Maecky

+4

đã chết! điểm của tôi! – remi

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

Tài liệu cho split and merge functions

Các vấn đề liên quan