Comment créer un semi transparent forme?
Je voudrais savoir comment dessiner des semi-transparent formes dans OpenCV, semblables à ceux de l'image ci-dessous (à partir de http://tellthattomycamera.wordpress.com/)
Je n'ai pas besoin de ceux de fantaisie cercles, mais je voudrais être en mesure de dessiner un rectangle en e.g, sur un canal 3 de couleur de l'image et de spécifier la transparence du rectangle, quelque chose comme
rectangle (img, Point (100,100), Point (300,300), Scalar (0,125,125,0.4), CV_FILLED);
où 0,125,125
est la couleur du rectangle et 0.4
indique la transparence.
Cependant OpenCV ne dispose pas de cette fonctionnalité intégrée dans ses fonctions de dessin. Comment puis-je dessiner des formes dans OpenCV, de sorte que l'image originale dessinée est partiellement visible à travers la forme?
Vous devez vous connecter pour publier un commentaire.
L'image ci-dessous illustre la transparence à l'aide d'OpenCV. Vous avez besoin de faire un alpha mélange entre l'image et le rectangle. Ci-dessous est le code pour faire cela.
image
Mat objet dansaddWeighted
appel de fonction, comment est-elle mise à jour de l'image? Merciroi
agit d'un bâtiment rectangulaire tranche de donnéesimage
. C'est, si vous lisez à partir deroi
vous lisez à partir d'image
, si vous modifiezroi
vous sont également modifierimage
.cv::Mat roi = image(cv::Mat(points));
(oùpoints
est un vecteur de cv::Point) mais il ne fonctionne pas.Dans OpenCV 3 ce code a fonctionné pour moi:
Source/Inspire par: http://bistr-o-mathik.org/2012/06/13/simple-transparency-in-opencv/
Ajoutant à Alexandre Taubenkorb réponse, vous pouvez dessiner aléatoire (semi-transparent) des formes par le remplacement de la
cv::rectangle
ligne avec la forme que vous voulez dessiner.Par exemple, si vous voulez dessiner une série de semi-transparent cercles, vous pouvez le faire comme suit: