2012-10-10 24 views

Odpowiedz

6

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.

+2

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

+1

Tak, prawdopodobnie masz rację, więc zaznaczę tę odpowiedź jako poprawną. Dzięki – Maecky

+4

cholernie! moje punkty! – remi

8
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

Powiązane problemy