2011-10-11 3 views
3

J'ai une image IplImage à 3 canaux. Je voudrais créer une image à 4 canaux et définir le canal alpha pour lui à une valeur inférieure à 1.0 pour le rendre semi-transparent.openCV: ajouter de la transparence à IplImage

d'abord, je régler le canal alpha (le canal 4-e) de 0,5:

cvSet(Image_c4, cvScalar(0,0,0,0.5); 

Voici la commande que j'utilisé pour copier l'image 3 canaux en une image à 4 canaux.

cvCvtColor(Image_c3, Image_c4, CV_RGB2RGBA); 

Le problème: Image_c3 est en couleur. Image_c4 devient une copie en niveaux de gris de Image_c3 (et sans transparence).

Mise à jour: Il est avéré que le code ci-dessus est en fait correcte et de travaux et est en fait plus concis que les solutions proposées dans les réponses ci-dessous. J'ai eu un bug sans rapport ailleurs.

Répondre

5

Peut-être il y a une autre façon, mais j'ajouter de la transparence comme ceci:

// BGR split 
cvSplit(im1_bgr, im1_b, im1_g, im1_r, NULL); 

// Alpha channel creation (transparency) 
IplImage *im1_a = cvCreateImage(cvGetSize(im1_bgr), 8, 1); 
// Set the alpha value 
cvSet(im1_a, cvScalar(128), NULL); 

// Merge the 4 channel to an BGRA image 
IplImage *im1_bgra = cvCreateImage(cvGetSize(im1_bgr), 8, 4); 
cvMerge(im1_b, im1_g, im1_r, im1_a, im1_bgra); 
+1

Merci d'avoir pris le temps de répondre. Il s'est avéré que le code dans ma question était correct et j'avais un autre bug sans rapport. Votre code est également correct, mais le cvCvtColor fait la même chose, mais c'est beaucoup plus simple. – RawMean

0
//This code help to make a transparency image But it take src image as one //single color background see![Removing background and added black background color ][1] 
Mat dst;//(src.rows,src.cols,CV_8UC4); 
Mat tmp,alpha; 

cvtColor(src,tmp,CV_BGR2GRAY); 
threshold(tmp,alpha,0,255,THRESH_BINARY); 

Mat rgb[3]; 
split(src,rgb); 

Mat rgba[4]={rgb[0],rgb[1],rgb[2],alpha}; 
merge(rgba,4,dst); 
imwrite("dst.png",dst); 
//dst is transparency image see here![output image as transparency image][2] 


    [1]: http://i.stack.imgur.com/9THqs.png 
    [2]: http://i.stack.imgur.com/mpmgy.png 
Questions connexes