-
détection de contours
Bonjour,
Avant de demander votre aide, j'ai beaucoup cherché sur internet. Cependant, rien n'a résolu mon problème pour le moment. Voila le problème: j'utilise une webcam et je dois détecter des contours d'une carte (style carte de visite mais plastifiée).
Je dois détecter une carte qui n'est pas de couleur unie (c'est à dire qu'il peut y avoir du blanc comme de noir, du rose, du bleu...) avec un fond non uni non plus.
J'ai essayé avec la fonction findcontours (comme dans l'exemple squares.cpp) et avec la fonction houghlines.
Lorsque j'utilise la fonction findcontours, les contours de la carte se mélangent à ceux de l'arrière plan.
Lorsque j'utilise la fonction houghlines, j'obtiens beaucoup trop de lignes (même en réglant les différents paramètres).
Avant ces fonctions, j'ai essayé canny threshold, flou mais je n'y arrive toujours pas!!
Merci de votre aide.
-
Une idée serait de faire une soustraction de fond en sauvegardant ton image de second plan.
L'API C++ d'OpenCV offre pour cela 2 classe : BackGroundSubtractorMOG et BackgroundSubtractorMOG2, la 2e te permet de détecter des ombres si l'envie t'en prends, si tu utilises l'API C, il faudra alors utiliser cvGaussBGStatModel (il n'y a pas de doc dans la documentation officielle puisque c'est une fonction tiers).
Tu sauvegardes donc ton second plan dans une cv::Mat ou IplImage (selon si tu utilises OpenCV C++ ou C), tu fais ta soustraction de fond avec une image de premier plan que tu récupères de ta webcam et après tu applique comme tu faisais un findContours sur l'image de premier plan cette-fois.