<< Étude de quelques filtres usuels | Liste des exercices | >>

3. Fonctionnalités graphiques d'OpenCV

Ces exercices illustrent l'utilisation de quelques-unes des fonctionnalités d'OpenCV pour construire une interface utilisateur graphique (Graphical User Interface, GUI). Ils nécessitent d'utiliser une fenêtre OpenCV et non plus matplotlib.

Utilisation d'un curseur

Parmi les contrôles graphiques disponibles dans sous OpenCV, un curseur (trackbar) propose un certain nombre de valeurs à l'utilisateur :

La fonction permettant de créer un tel curseur est CreateTrackbar. Son troisième paramètre est une variable entière, dont la valeur sera mise à jour automatiquement lors l'utilisateur déplace le curseur. Le dernier paramètre est le nom de la fonction de rappel (callback) ; celle-ci est appelée à chaque déplacement du curseur, dont la valeur lui est transmise en paramètre. Des exemples d'utilisation de ce contrôle graphique sont disponibles sur BOTFORGE.

  1. Sur le modèle de la fonction seuiller, écrire la fonction :
def seuillerCurseur(image, seuil=0.0, roi=None)
qui affiche l'image, la binarise en déterminant éventuellement le seuil automatiquement (si seuil vaut 0), puis utilise un curseur pour fixer le seuil de binarisation de cette image et la réafficher jusqu'à ce que l'utilisateur appuie sur la touche ECHAP. Tester cette fonction sur l'image des doigts pour retrouver ainsi le seuil déterminé aux questions 4 et 5 de l'exercice 1.

Définition d'une région d'intérêt à la souris

On souhaite maintenant fixer une ROI en dessinant son rectangle à la souris sur l'image, sur le modèle du tutoriel de A. Rosebrock.

  1. Compléter la fonction seuillerCurseur pour
    1. créer une nouvelle fenêtre destinée à afficher une copie de l'image d'origine ;
    2. affecter à cette fenêtre une fonction de rappel nommée setROI en lui transmettant le seuil de binarisation.
  2. Écrire la fonction de rappel :
def setROI(event, x, y, flags, param)
qui
  1. grâce à la fonction copyMakeBorder, duplique l'image d'origine dans la fenêtre nouvellement créée ;
  2. grâce à la fonction rectangle, dessine un rectangle délimitant la ROI sur l'image dupliquée puis affiche cette image ;
  3. détermine le nouveau seuil automatiquement à partir de la ROI définie à la souris, binarise l'image d'origine avec ce seuil, puis affiche l'image binarisée ;
  4. affecte la nouvelle valeur de seuil au curseur.