Mam JPEG i maskę. Chcę utworzyć plik PNG z trzema kanałami JPEG, a kanał alfa powinien być maską. Jak mogę to osiągnąć dzięki OpenCV?OpenCV 2.4 Jpeg do PNG z kanałem alfa
Pozdrowienia
Mam JPEG i maskę. Chcę utworzyć plik PNG z trzema kanałami JPEG, a kanał alfa powinien być maską. Jak mogę to osiągnąć dzięki OpenCV?OpenCV 2.4 Jpeg do PNG z kanałem alfa
Pozdrowienia
Dzięki za odpowiedź, znalazłem drugie rozwiązanie:
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);
Działa to idealny, nie jestem pewien, które rozwiązanie jest lepsze.
std::vector<cv::Mat> channels;
cv::split(jpgImage, channels);
channels.push_back(mask);
cv::Mat bgraImage;
cv::merge(channels, bgrAImage);
Dokumentacja split and merge functions
Rzeczywiście, byłem trochę leniwy, aby sprawdzić dokumentację mixChannels przed odpowiedzią, podział/scalanie jest proste. Ale mixChannels jest prawdopodobnie szybszy, ponieważ nie potrzebujesz tymczasowych matryc. – remi
Tak, prawdopodobnie masz rację, więc zaznaczę tę odpowiedź jako poprawną. Dzięki – Maecky
cholernie! moje punkty! – remi