Club robotique de Sophia-Antipolis

Accueil > POBOTpedia > Programmation > Découvrir > Open Source et Logiciel Libre > Logiciels open source pour la robotique > Découverte d’OpenCV

Découverte d’OpenCV

jeudi 16 décembre 2010, par Julien H.

Un ensemble d’outils est apparu pour faciliter la reconnaissance d’images en mouvement et raccourcir le temps de développement entre le concept et sa réalisation : c’est Open Computer Vision ou simplement OpenCV.

Cette bibliothèque d’exécutables et de codes sources (C et C++ avec des ponts vers d’autres langages) propose différents algorithmes utilisables tels quels (détection de formes, de couleurs, isolation et poursuite d’objets).

Site officiel d’OpenCV (SourceForge redirigé vers Willow Garage)

Fiche Wikipedia (en français) pour OpenCV (liste des algorithmes)

Historique

Des algorithmes performants de traitement d’images fixes sont disponibles depuis plusieurs décennies : la théorie est bien connue, et la mise en pratique de plus en plus poussée. Leur application à la vidéo restait cependant plus confidentielle, notamment parce que la puissance nécessaire pour obtenir de bonnes performances était élevée, et parce que les applications industrielles (photographie numérique, cartographie, sécurité...) représentaient encore un marché très protégé.

Les équipes de recherche Intel ont amélioré les algorithmes de traitement vidéo à la fin des années 90 et finalement leur code a été mis à disposition librement (sous licence BSD actuellement) en 2000.

Dès 2006, la version 1.0 se répand dans la communauté "électronique" (regroupant une audience plus large que seulement les développeurs d’applications multimédia) et finalement Willow Garage, acteur fort de la robotique avec ROS, prend la tête du support puis du développement en 2008.

Fiche Wikipedia (en anglais) pour OpenCV (historique et contexte)

Utilisation

Les nouvelles versions simplifient l’usage des exécutables compilés pour éviter de coder une application pour des tâches communes et simples.

Il est ainsi possible de configurer la reconnaissance de forme en fournissant des fichiers XML décrivant la structure picturale (formes, couleurs) de l’objet à détecter. On obtient alors une représentation en temps réel de la détection, permettant d’affiner la détection en peu de temps.

Premier essai

Si vous avez une webcam et que vous installez OpenCV (version 2.2.0 en ce moment), vous pouvez lancer tout de suite le programme "facedetect.cmd" dans les exemples en C.

Vous obtiendrez alors une détection de visage assez bluffante :

Si on regarde le contenu du fichier, on voit que le programme "facedetect" est appelé avec en argument les fichiers XML de description du visage à détecter :

facedetect --cascade="../../data/haarcascades/haarcascade_frontalface_alt.xml" --nested-cascade="../../data/haarcascades/haarcascade_eye.xml" --scale=1.3 %1

On se rend compte qu’il y a deux fichiers distincts utilisés pour la détection : un pour le visage (frontal face alt) et un pour les yeux (eye). Le terme "haar" doit retenir votre attention : il s’agit là d’un des principes algorithmiques majeurs qui font la rapidité de détection d’OpenCV.

C’est un domaine complexe et passionnant. Vous pouvez consulter l’article wikipedia sur les caractéristiques pseudo-Haar pour essayer d’en apprendre un peu plus.

Pour continuer à expérimenter, vous pouvez essayer d’autres "cascades" pour détecter le nez, la bouche, etc.. en parcourant les exemples fournis par Ale Reimondo.

Un message, un commentaire ?

modération a priori

Attention, votre message n’apparaîtra qu’après avoir été relu et approuvé.

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.