IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenCV Discussion :

Reconnaissance d'un cercle


Sujet :

OpenCV

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 327
    Par défaut Reconnaissance d'un cercle
    Bonjour,

    Voila je me suis amusé à faire développé une petite fonction qui repère tout ce qui a une forme circulaire dans une image. Cela marche bien seulement, si il voit au moins un cercle il m'en dessine beaucoup même à des endroit ou il n'y en a pas, par contre si il ne voit pas de cercle il ne me dessine rien. Voici le petit bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    bool circle (IplImage* image) {
    	IplImage* circle_image = cvCreateImage (cvGetSize (image), image->depth, 1);
    	CvMemStorage* storage = cvCreateMemStorage (0);
     
    	cvConvertImage(image, circle_image);
            //cvSmooth (circle_image, circle_image, CV_GAUSSIAN, 5, 5);
    	CvSeq* results = cvHoughCircles (circle_image, storage, CV_HOUGH_GRADIENT, 2, image->width/10);
     
    	if (results->total != 0) {
    		for (int i=0;i<results->total;i++) {
    			float* circles = (float*)cvGetSeqElem (results, i);
    			CvPoint pt = cvPoint (cvRound (circles[0]), cvRound (circles[1]));
     
    			cvCircle (circle_image, pt, cvRound (circles[2]), CV_RGB (0, 0, 0));
    		}
    		cvClearSeq (results);
    		cvClearMemStorage( storage );
    		cvShowImage ("img circle", circle_image);
     
    		return true;
    	} else {
    		cvClearSeq (results);
    		cvClearMemStorage (storage);
    	}
     
    	return false;
    }
    Autre petit problème je ne sais pas pourquoi lorsque je décommente la fonction "cvSmooth ()" mon application plante

    Merci d'avance si vous avez une idée du pourquoi de ces 2 petits soucis

  2. #2
    Membre chevronné
    Inscrit en
    Mars 2010
    Messages
    439
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 439
    Par défaut
    ta oublié deux paramètres le min et max du diamètre des cercles à tracker, pour le smooth je pense qu'il trouve trop de possibilité si tu ne le fais pas donc il doit pas apprécier.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 327
    Par défaut
    En effet c'était bien cela mais j'ai changé le filtre car je n'obtenais des de résultat assez satisfaisant avec celui-ci.

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Reconnaissance d'un cercle sur une image
    Par claude nguingui dans le forum Traitement d'images
    Réponses: 8
    Dernier message: 12/07/2011, 10h52
  2. Réponses: 23
    Dernier message: 16/11/2002, 19h41
  3. [VB6] [Graphisme] Arc de cercle dans un picturebox
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 04/11/2002, 17h55
  4. [langage] Reconnaissance de mots
    Par Flo. dans le forum Langage
    Réponses: 2
    Dernier message: 10/08/2002, 23h34
  5. savoir si 1 point est a l'intérieur d'un cercle ...
    Par skarladevobsy dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 23/05/2002, 18h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo