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
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
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.
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
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
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
đã chết! điểm của tôi! – remi