Detection de formes

blastrame Messages postés 10 Date d'inscription mardi 20 janvier 2009 Statut Membre Dernière intervention 8 juin 2010 - 1 juin 2010 à 16:48
blastrame Messages postés 10 Date d'inscription mardi 20 janvier 2009 Statut Membre Dernière intervention 8 juin 2010 - 8 juin 2010 à 20:05
Bonjour,

J'aurais besoin de votre aide pour détecter la forme rectangle, triangle et rond car mon code fonctionne actuellement avec un nombre de pixel défini et je souhaiterais pouvoir detecter les formes sans avoir a mettre le nombre de pixels pile. Mais mon probleme est que le rond, le rectangle et le triangle on a peux pres 2000 voir 1000 octets de différences comment puis je faire? Merci d'avance de vos réponses

Mon code actuel est le suivant:

 if((compteurN 13191)||(compteurN 43662))
{
//! Affichage a l'écran que la pièce est ronde
cout << "La forme est ronde avec : " << compteurN << " octets" <<endl;
//! Ecriture de la forme avec son nombre de pixel noir dans fichier 1
fichier1 << "La forme est ronde avec : " << compteurN << " octets" <<endl;
cout << endl;
}
//! Sinon Si le compteur N est egale a la valeur 1 ou la valeur 2 ou la valeur 3 alors faire la traitement
else if ((compteurN 27123)||(compteurN 70944)||(compteurN == 56622))
{
//! Affichage a l'écran que la pièce est rectangulaire
cout << "La forme est rectangulaire avec : " << compteurN << " octets" <<endl;
//! Ecriture de la forme avec son nombre de pixel noir dans fichier 1
fichier1 << "La forme est rectangulaire avec : " << compteurN << " octets" <<endl;
cout << endl;
}
//! Sinon Si le compteur N est egale a la valeur 1 ou la valeur 2 alors faire la traitement
else if ((compteurN 29082)||(compteurN 58560))
{
//! Affichage a l'écran que la pièce est triangulaire
cout << "La forme est triangulaire avec : " << compteurN << " octets" <<endl;
//! Ecriture de la forme avec son nombre de pixel noir dans fichier 1
fichier1 << "La forme est triangulaire avec : " << compteurN << " octets" <<endl;
cout << endl;
}

//! Sinon si compteur N ne correspond pas au 3 autres choix alors la forme est inconnue
else
{
//! Affichage a l'ecran que la forme est inconnue
cout << "La forme est inconnu avec : " << compteurN << " octets" <<endl;
//! Ecriture de la forme inconnue avec son nombre de pixel noir dans fichier 1
fichier1 << "La forme est inconnu avec : " << compteurN << " octets" <<endl;
cout << endl;
}	
}
}
}
 


Mes formes sont fixées a rectangle, triangle et ronde, ce que je cherches a faire c'est de detecter la forme d'une piece, car ma piece apres le seuillage est noire et le fond est blanc c'est pour cela que j'ai utilisé un nombre de pixel de couleur noir. Car avec les ombres des machine le nombre de pixels noir sur l'image augmente.

Ce que je veux faire c'est par exemple si on met un rectangle le reconnaitre peux importe sa taille et pareil avec les autres formes, mais dans mon code actuel le nombre de pixel est assez proche entre le triangle et le rectangle, donc si on me met un rectangle un px plus grand le nombre de pixel sera le meme que le triangle.

Merci d'avance de vos reponses

5 réponses

blastrame Messages postés 10 Date d'inscription mardi 20 janvier 2009 Statut Membre Dernière intervention 8 juin 2010
2 juin 2010 à 16:17
Personne?
BunoCS Messages postés 15479 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 juin 2024 103
2 juin 2010 à 17:09
Hello,
Je ne pense pas que ce soit une bonne idée de se baser sur le nombre de pixels pour définir une forme...
Il faut plutôt que tu définisses des règles pour tes formes. En gros:
- rectangle = forme avec des angles droits, ou approchant
- triangle = forme avec 3 angles (ou changement de direction)
- cercle = pas de ligne droite


@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
blastrame Messages postés 10 Date d'inscription mardi 20 janvier 2009 Statut Membre Dernière intervention 8 juin 2010
3 juin 2010 à 17:26
D'accord je vais essayer ca, mais aurais tu un exemple sous la main de se que tu me dis de réalisé pour que je comprendre le principe de ton idee.

Merci d'avance
cosinus11 Messages postés 1 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 7 juin 2010
7 juin 2010 à 22:04
Tu devrais te pencher vers la transformée de Hough en traitement d'images. C'est un outil particulièrement adapté pour la situation que tu rencontres.

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
blastrame Messages postés 10 Date d'inscription mardi 20 janvier 2009 Statut Membre Dernière intervention 8 juin 2010
8 juin 2010 à 20:05
Oui mais comment utiliser cette methode?
Rejoignez-nous