Présentation


Nous allons maintenant comment exploiter le processeur afin de faire une détection de couleur. Pour cela nous allons voir comment faire un réglage de seuil au niveau de l’image que nous désirons détecter, régler cette image, et ensuite demander à la caméra qu’elle encadre l’image dès que celle-ci est captée.

Création d’une image


Afin de faire cette expérience nous allons ouvrir “paint” sous Windows et dessiner un rond de fond rouge et cadrer l’image comme ceci (peu importe la grosseur):

Ensuite,une fois dessiné, nous allons enregistrer ce « dessin » sur le disque au format (.png). Pour cela débrancher et rebrancher vos Caméra, et vous devez retrouver le disque  comme cela: (pour ma part il s’agit du disque “G:\”)

Une fois enregistré, il suffit de retourner dans l’application OpenMV IDE Afin de vous rendre dans l’éditeur de seuil:

Une fois validé, vous devriez obtenir cette fenêtre:

La fenêtre indique “Tampon trame” c’est à dire l’image qui est située dans le tampon de trame (image filmé) soit “Fichier image” c’est à dire une l’image située sur votre ordinateur ou bien dans le disque de la caméra.
Puisque nous avons enregistré le fameux “rond à fond rouge” dans le disque de la caméra, nous allons donc cliquer sur “Fichier image” afin de l’ouvrir.

Déterminer le seuil des couleurs


Si tout a été respecté jusqu’à ici vous devez obtenir ceci:


Nous nous retrouvons désormais dans le seuil des couleurs qui contient 5 curseurs. le but est “simple” je dis “simple” car vous allez devoir jouer avec ces 5 curseurs pour obtenir un fond noir avec un rond de fond blanc. En effet, les pixels blanc sont les couleurs suivis par la caméra, il en résulte numériquement que l’image va être converti en un fichier binaire il va donc mettre la couleur blanche (pixel blanc) au niveau logique « 1 » et la couleur noir (pixel noir) au niveau logique « 0 ». Il en résulte que seul le niveau logique « 1 » sera pris en compte par la caméra.
Afin de retrouver l’image en noir et blanc, je procède ainsi, tout les curseurs à droite je les passent à gauche, et vice versa ce qui donne:

Programmation



(Clique pour agrandir)

Détails programmation
Niveau programmation, nous allons voir ça de plus près, n’ayez pas peur surtout!!.

– import sensor => Permet d’importer le module sensor (module de caméra pour pouvoir filmer)
– sensor.reset() => Vous l’avez devinez j’en suis sûr!!
– sensor.set_pixformat(sensor.RGB565) => ici nous allons agir sur le réglage des pixel de la caméra en l’occurrence les pixels qui seront en couleur RGB (Red/Green/Blue)=Rouge/Vert/Bleu
– sensor.set_framesize(sensor.QQVGA) => Permet de régler la résolution de la caméra en 600×480
– img = sensor.snapshot() => On capture l’image “réelle” qui sera mis dans une variable.
– for blobs in img.find_blobs([Color_Red], merge=False, margin=5): => Tout le travail est là!!


Commençon par la fonction à regarder la fonction “img.find_blobs([Color_Red], merge=False, margin=5):

« img » correspond à la variable qui récupère ce que la caméra film (déclaré en début du programme). Ensuite nous allons lui ajouter « .find.blobs » qui est une routine qui permet de trouver (find= trouver) un « objet » situé dans son environnement filmé !
Afin de pouvoir retrouver l’objet, nous allons rentrer des paramètres entres ces parenthèses et commencer par “[color_red]”, qui correspond à la couleur que nous voulons détecter via la caméra.

Attention !!! “[color_red]” est situé entre crochet ([]) et il faut impérativement respecter ce procédé, car il s’agit d’un tuple et ce tuple doit être situé entre ces deux crochets!
La valeur du tuple correspond aux réglages des seuils de couleurs que nous avons déterminés et réglés précédemment. Valeur = (34,77,82,2,57,17).
Si tous ces éléments ont été respectés la caméra détectera la couleur rouge situé sur l’écran de votre ordinateur, et encadrera cette couleur par un rectangle vert (voir capture ci-dessus à droite)

Remarque
fimg.find_blobs([Color_Red], merge=False, margin=5): peut-être remplacé par: fimg.find_blobs([(34, 77, 82, 2, 57, 17)], merge=False, margin=5):

Historiques


– 18/01/19
Première mise à disposition.