Rendre une couleur complètement transparente dans OpenCV

J’ai un fichier png de base avec deux couleurs, le vert et le magenta. Ce que je cherche à faire est de prendre tous les pixels magenta et de les rendre transparents afin que je puisse fusionner l’image en une autre image.

Un exemple serait si j’ai un fichier image d’un caractère 2D sur un fond magenta. Je supprimerais tout le magenta à l’arrière-plan pour le rendre transparent. À partir de là, je prendrais simplement l’image du personnage et l’appendais comme calque dans une autre image, de sorte que le personnage aurait été placé dans un environnement.

Merci d’avance.

C’est le code que j’utiliserais,

Commencez par charger votre image:

IplImage *myImage; myImage = cvLoadImage("/path/of/your/image.jpg"); 

Utilisez ensuite un masque comme celui-ci pour sélectionner la couleur. Reportez-vous à la documentation. Dans ce qui suit, je souhaite sélectionner un bleu (n’oubliez pas que dans OpenCV, les images sont au format BGR, donc 125,0,0 est un bleu (il correspond à la limite inférieure) et 255 127 est bleu avec une certaine tolérance et est la limite supérieure. J’ai choisi la limite inférieure et supérieure avec une tolérance pour prendre tout le bleu de votre image, mais vous pouvez sélectionner ce que vous voulez …

 cvInRangeS(image, cvScalar(125.0, 0.0, 0.0), cvScalar(255.0, 127.0, 127.0), mask ); 

Maintenant que nous avons sélectionné le masque, inversons-le (car nous ne voulons pas conserver le masque, mais le supprimer)

 cvNot(mask, mask); 

Et puis copiez votre image avec le masque,

 IplImage *myImageWithTransparency; //You may need to initialize it before cvCopy(myImage,myImageWithTransparency,mask); 

J’espère que ça pourrait aider,

Veuillez vous référer à la OpenCVDocumentation pour plus d’informations.

C’est ici

Julien

C’est un sujet entier en lui-même, avec un certain nombre de solutions. Je voudrais lire ceci en premier:

http://en.wikipedia.org/wiki/Transparency_(graphic)

Ensuite, voyez comment ces méthodes peuvent être appliquées dans OpenCV.