Go Down

Topic: Reconnaisance d´image et de forme avec Arduino mega2560 et la CMUCAM4 (Read 900 times) previous topic - next topic

joecole

salut !

en fait j'ai quelque difficulte avec mon projet d´etude. cela consiste a faire le trier d´objet du point de vue de leur couleur et de leur forme.
par exemple nous avons trois type d'objets et trois recipients
object de type1: rouge et carre  vont dans le recipient1
object de type2: vert et triangulaire  vont dans le recipient2
object de type3: bleu et Rond  vont dans le recipient3

j´ai sous la main un programme qui permet d´identifier les couleurs mais pas de facon exact compte tenu de la luminosite qui est ambiante.

#include <CMUcam4.h> // Bibliothèques
#include <CMUcom4.h>
#define LED_BLINK 5 // 5 Hz
#define WAIT_TIME 5000 // 5 seconds
#define LED_UP 11 // Les nombres correspondent à la sortie sur la
#define LED_MID 10 Arduino.
#define LED_DOWN 12
#define LED_DEBUG 13
CMUcam4 cam(CMUCOM4_SERIAL);
void setup()
{
cam.begin();
cam.LEDOn(LED_BLINK);
delay(WAIT_TIME);
cam.autoGainControl(false);
cam.autoWhiteBalance(false);
cam.LEDOn(CMUCAM4_LED_ON);
// Déclaration des sorties numériques
pinMode(LED_UP, OUTPUT);
pinMode(LED_MID, OUTPUT);
pinMode(LED_DOWN, OUTPUT);
pinMode(LED_DEBUG, OUTPUT);
}
void loop()
{
CMUcam4_tracking_data_t data;
// l'état des LED.
int lightUp, lightMid, lightDown, lightDebug;
for(;;)
{
// par défaut, on reset toutes les valeurs
lightUp = LOW;
lightMid = LOW;
lightDown = LOW;
lightDebug = LOW;
// ROUGE
cam.trackColor(120,255,0,60,0,60); // chercher dans le rouge
22
cam.getTypeTDataPacket(&data); // récupérer les infos transmises par la cam
if(data.pixels > 1) { // si on détecte des pixels de cette couleur
lightUp = HIGH; // on allumera la LED UP
}
// VERT
cam.trackColor(0,60,0,255,0,120);
cam.getTypeTDataPacket(&data);
if(data.pixels > 1) {
lightMid = HIGH;
}
// BLEU
cam.trackColor(0,60,0,60,120,255);
cam.getTypeTDataPacket(&data);
if(data.pixels > 1) {
lightDown = HIGH;
}
digitalWrite(LED_UP, lightUp);
digitalWrite(LED_MID, lightMid);
digitalWrite(LED_DOWN, lightDown);
digitalWrite(LED_DEBUG, lightDebug);
}
}


J'aimerai tout de meme ecrit une fonction qui effectue la reconnaissance de la forme.
je sais que lorsque on fait un track color les parametres suivants sont renvoyes:
- mx et my representent respectivement les moyennes des valeurs des coordonnees horizontales(x) et verticale (y)
-x1 et y1 sont les coordonnees de l'angle superieur gauche du rectangle qui entoure l'objet suivi
-x2 et y2 sont les coordonnees de l´angle inferieur droit du rectangle qui entoure l´objet suivi
-pixels est le pourcentage du nombre de pixels suivi dans la fenetre de suivi
-confidence est le pourcentage du nombre de pixels suivis dans le rectangle de suivi

je ne sais pas comment exploiter ces information pour pour effectuer la reconnaissance de laforme des objects par CMUCAM4

merci d´avance pour votre contribution

Go Up