Tengo un JPEG y una máscara. Quiero crear un PNG con los tres canales JPEG y el canal alfa debe ser la Máscara. ¿Cómo puedo lograr esto con OpenCV?OpenCV 2.4 Jpeg a PNG con canal alfa
Saludos
Tengo un JPEG y una máscara. Quiero crear un PNG con los tres canales JPEG y el canal alfa debe ser la Máscara. ¿Cómo puedo lograr esto con OpenCV?OpenCV 2.4 Jpeg a PNG con canal alfa
Saludos
Gracias por su respuesta, me encontré con una segunda solución:
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);
Esto funciona perfecto, no está seguro de qué solución es la mejor.
std::vector<cv::Mat> channels;
cv::split(jpgImage, channels);
channels.push_back(mask);
cv::Mat bgraImage;
cv::merge(channels, bgrAImage);
Documentación para split and merge functions
De hecho, era un poco flojo comprobar la documentación de MixChannels antes de contestar, dividir/fusionar es sencillo. Pero mixChannels es probablemente más rápido, ya que no necesita las matrices temporales – remi
Sí, probablemente tenga razón, por lo que marcaré esta respuesta como la correcta. Gracias – Maecky
maldito! ¡mis puntos! – remi