View  Edit  Attributes  History  Attach  Print  Search

ACCUEIL | ARDUINO > S'INSTALLER > DEBUTER > APPROFONDIR | PROCESSING | MECATRONIQUE | MATERIEL | OUTILS | TESTS | Plus...|
Python > Shell > ATELIERS Python + Qt > PyQt apps > PyQt+Arduino | Mes Robots | RepRap | Mes lib'Arduino | Mes shields Arduino | Mes distros | Les Mini-PC |
ATELIERS ARDUINO| VIDEOS | COMPRENDRE | REFERENCES | CODER | TECHNIQUE | GNU/LINUX | LIENS | Rien à voir |

Processing – interface graphique programmable côté PC pour le système Arduino.

Par X. HINAULT. 2010 - 2012

IMPORTANT : Bien qu'utile en phase d'initiation à la programmation d'interfaces graphiques, j'estime que Processing montre vite ses limites dès lors que l'on souhaite réaliser de vraies interfaces graphiques système (ou GUI). D'autre part, Processing est trop gourmand en ressources système et est inutilisable sur une plateforme telle que le RaspberryPi, pcDuino ou autre mini-PC. J'utilise donc à présent et je conseille d'utiliser plutôt le langage Python associé à la librairie graphique Qt. Tout en offrant les mêmes fonctionnalités que Processing (réseau, série, OpenCV, OpenGL, etc..), cette solution de niveau professionnel, libre, multi-plateforme et mature s'avère bien plus puissante sous bien des aspects. C'est également un apprentissage ayant une portée bien plus polyvalente que Processing. Voir ma rubrique dédiée : Développer avec Python
X. HINAULT - Avril 2013

L'interface graphique programmable Processing, véritable "couteau suisse logiciel", écrite en Java (multiplateforme donc...) par le MIT, libre et opensource, donne la possibilité de créer des interfaces graphiques côté PC pour communiquer avec le système Arduino. On peut ainsi commander à la souris ou au clavier la carte Arduino ou bien afficher sur le PC des graphiques à partir des données reçues depuis la carte Arduino. Processing permet également de réaliser de la capture vidéo, du traitement d'image, des applications réseau serveur ou client, de la lecture de son, de la reconnaissance vocale... !! Cette interface utilise un langage dédié facile à prendre en main. Que du bon... et même du très très bon !

  • dans la dernière version de Processing 1-5, les librairies sont à mettre dans le répertoire /processing/modes/java/libraries/ au lieu du classique /processing/libraries/
  • Pour la communication série avec Processing sous Ubuntu, voir : Infos techniques utiles Processing

Sur cette page... (Masquer)

  1. 1. Découvrir Processing
  2. 2. Le langage Processing
  3. 3. Graphismes avec Processing
    1. 3.1 Tracé de courbe avec Processing
    2. 3.2 Grapheurs avec interfaces GUI
  4. 4. Interface GUI avec Processing
    1. 4.1 Mes programmes Processing : grapheurs avec interfaces graphiques
    2. 4.2 Interface graphique GUI ControlP5 :
  5. 5. Communication Série avec Processing
  6. 6. Utilisation du texte avec Processing
    1. 6.1 En mode console texte
    2. 6.2 En mode graphique
  7. 7. Gestion des fichiers et répertoires avec Processing
  8. 8. Ligne de commande programmée avec Processing (Gnu/Linux Ubuntu)
  9. 9. Les entrées souris et clavier avec Processing
  10. 10. Les sons et synthèse vocale avec Processing
    1. 10.1 Ressources
    2. 10.2 Mes programmes Processing utilisant les sons
  11. 11. Reconnaissance vocale avec Processing
  12. 12. Traitement et analyse d'images avec Processing
  13. 13. Vidéo avec Processing
    1. 13.1 Ressources
    2. 13.2 Mes programmes Processing utilisant la capture vidéo simple
    3. 13.3 Datalogging Image et Vidéo
  14. 14. Reconnaissance visuelle et suivi d'objet avec Processing
    1. 14.1 L'ESSENTIEL :
    2. 14.2 Pour mémoire :
    3. 14.3 Présentation
    4. 14.4 Exemples d'utilisation de base.
    5. 14.5 Traitement d'image "statique" : Les programmes d'exemple de la référence.
    6. 14.6 Traitement d'image en direct d'un ou plusieurs flux vidéos issus d'une ou plusieurs webcams avec la librairie GSVideo (capture vidéo) et ma librairie OpenCV javacvPro pour Processing (reconnaissance visuelle)
    7. 14.7 Suivi d'objet coloré
    8. 14.8 Reconnaissance et suivi de visage
    9. 14.9 Détection et suivi de la main et des doigts
    10. 14.10 Divers
    11. 14.11 Les objets fondamentaux "statiques" d'OpenCV
    12. 14.12 Les objets fondamentaux "dynamiques" d'OpenCV
    13. 14.13 Techniques et stratégies utiles
  15. 15. Communications Serveur/Client avec Processing
  16. 16. Mathématique avec Processing
  17. 17. 3D avec Processing
  18. 18. ARToolkit : réalité augmentée et 3D positionning avec Processing
  19. 19. Animations avec Processing
  20. 20. Mes programmes Processing pour Arduino

1.  Découvrir Processing

2.  Le langage Processing

Graphiques avec Processing

3.  Graphismes avec Processing

Processing

3.1  Tracé de courbe avec Processing

3.2  Grapheurs avec interfaces GUI

  • dans la dernière version de Processing 1-5, les librairies sont à mettre dans le répertoire /processing/modes/java/libraries/ au lieu du classique /processing/libraries/
  • Pour la communication série avec Processing sous Ubuntu, voir : Infos techniques utiles Processing

Interfaces GUI

4.  Interface GUI avec Processing

Processing

4.1  Mes programmes Processing : grapheurs avec interfaces graphiques

4.2  Interface graphique GUI ControlP5 :

Contrôles de base de l'interface graphique GUI ControlP5 :

Sliders (réglages linéaires) :

Boutons graphiques :

Champs Texte :

Interface GUI ControlP5 et librairie Video openCV
Interface GUI ControlP5 et PImage
Interface GUI controlP5 et sons (Minim)

5.  Communication Série avec Processing

6.  Utilisation du texte avec Processing

6.1  En mode console texte

6.2  En mode graphique

Fichiers et Répertoires

7.  Gestion des fichiers et répertoires avec Processing

Processing

Datalogging texte

Datalogging Image

Datalogging Vidéo

Datalogging Son

Ligne de commande programmée

8.  Ligne de commande programmée avec Processing (Gnu/Linux Ubuntu)

9.  Les entrées souris et clavier avec Processing

10.  Les sons et synthèse vocale avec Processing

10.1  Ressources

10.2  Mes programmes Processing utilisant les sons

Il y 3 façons différentes de générer des sons à partir de Processing :

  • Soit en utilisant la librairie Minim (utilise Javasound) - pas utilisable avec synthese vocale - multi-OS
  • Soit en appelant mplayer par ligne de commande depuis Processing (simple et efficace !) - Ubuntu
  • Soit en utilisant la synthèse vocale avec le logiciel espeak en ligne de commande (voix feminines/masculines, simple à utiliser ) - Ubuntu
Sons avec la librairie Minim
Sons avec mplayer lancé en ligne de commande depuis Processing
Synthèse vocale avec espeak lancé en ligne de commande depuis Processing

11.  Reconnaissance vocale avec Processing

Traitement et analyse d'image

12.  Traitement et analyse d'images avec Processing


Video

13.  Vidéo avec Processing

13.1  Ressources

GSVideo (capture et lecture vidéo)

openCV (capture et reconnaissance visuelle) - obsolète - voir à présent : librairie javacvPro

Un petit truc bien utile sous Ubuntu : l'interface graphique "Video4Linux Device Preference" (paquet gtk-v4l) permet de régler l'image webcam même en cours d'utilisation avec Processing : pratique pour régler la luminosité ou autre.

13.2  Mes programmes Processing utilisant la capture vidéo simple


Capture vidéo avec la librairie GSVideo
  • A la différence de la librairie vidéo native de Processing qui implémente QuickTime (propriétaire, non compatible Linux...), la librairie GSVideo, libre et opensource) implémente les mêmes fonctions mais en se basant sur GStreamer (libre et opensource) qui est disponible sous Linux.
  • Cette librairie permet la capture vidéo à partir de 1 ou plusieurs webcams (à la différence de openCV qui ne supporte que 1 flux vidéo).
  • Cette librairie est également beaucoup plus rapide et gère le multi-thread (à la différence de la capture vidéo avec openCV...).
  • Encore mieux : couplée aux librairies GLGraphics et openGL, la librairie GSVideo gère les flux vidéos avec un gain CPU de plus de 25% par rapport à la librairie GSVideo seule (et un gain CPU de 75% quasiment par rapport à une capture avec openCV) !
  • Enfin, tous les flux vidéos issus de la capture par la librairie GSVideo peuvent être traités secondairement avec les fonctions avancées de la librairie openCV, permettant ainsi le suivi d'objet multi-webcams !

1 webcam :

Plusieurs webcams (multi-cam) :

J'ai personnellement réussi à utiliser GSVideo pour la capture de 8 flux vidéos webcam simultanément sous Ubuntu !

Capture vidéo avec GSVideo et traitement d'image avec la librairie OpenCV javacvPro

13.3  Datalogging Image et Vidéo



PAGES D'ARCHIVES


Capture vidéo simple avec la librairie OpenCV hypermédia
Capture vidéo avec GSVideo et traitement d'image avec la librairie OpenCV hypermédia

Reconnaissance Visuelle

14.  Reconnaissance visuelle et suivi d'objet avec Processing


Ressources

14.1  L'ESSENTIEL :

GSVideo (capture et lecture vidéo)

Ma librairie javacvPro : implémentation pour Processing de la librairie openCV 2.3.x (utilise javacv) NOUVEAU!

14.2  Pour mémoire :

javacv : implémentation java de la librairie openCV

librairie openCV "hypermedia" (capture et reconnaissance visuelle) - obsolète : voir à présent Javacvpro -


Codes JavacvPro

Codes Processing utilisant les fonctions de ma librairie Processing javacvPro (OpenCV 2.3.x)

14.3  Présentation

14.4  Exemples d'utilisation de base.

14.5  Traitement d'image "statique" : Les programmes d'exemple de la référence.

Traitement d'image de base

Traitement d'image avancé

Traitement entre 2 images

Extraction de contours

Détection objet/visage

Détection de formes

Analyse avancée de formes

14.6  Traitement d'image en direct d'un ou plusieurs flux vidéos issus d'une ou plusieurs webcams avec la librairie GSVideo (capture vidéo) et ma librairie OpenCV javacvPro pour Processing (reconnaissance visuelle)

Traitements simples
Reconnaissance et suivi de visage
Suivi d'objet coloré

Détection et suivi d'une balle colorée

Détection de plusieurs balles colorées

Divers

  • Test de détection d'une balle colorée basé sur une analyse colorimétrique dans l'espace HSV
Codes de Mécatronique utilisant la reconnaissance visuelle

Tests techniques

1 tourelle Pan

2 tourelles Pan (2 servomoteurs)

  • Suivi de balle colorée par 2 tourelles Pan

1 tourelle Pan-Tilt (2 servomoteurs)

2 tourelles Pan-Tilt (4 servomoteurs)

Bras robotisé

Reconnaissance et suivi d'objet

Recherche de concordance entre une image objet et une image scène

  • Test de l'algorithme SURF sur un flux vidéo

Voir également : ARToolkit : réalité augmentée et 3D positionning avec Processing

Techniques de soustraction du fond

Approche simplifiée

Approche avancée

  • Soustraction du fond par algorithme opencCV "Mixure Of Gaussian" (MOG)
  • Soustraction du fond par algorithme opencCV "Mixure Of Gaussian" version2 (MOG2)
Détection et suivi de la main et des doigts

Détection de la main et des doigts

Approche simplifiée de la détection des doigts

Suivi de la main et des doigts

Divers
  • Détection main par IR
  • Suivi mouvement oculaire
  • Suivi pointeur laser
  • Détection / suivi des carreaux de carrelage (sol)
  • Détection de portes

ModeleJavacvPro


PAGES D'ARCHIVES



Codes de Mécatronique utilisant la reconnaissance visuelle

1 tourelle Pan-Tilt

2 tourelles Pan-Tilt

Bras robotisé


Avec la librairie OpenCV "hypermedia" pour Processing seule (capture vidéo + reconnaissance visuelle)


Avec librairie GSVideo (capture vidéo) et librairie OpenCV "hypermedia" pour Processing (reconnaissance visuelle)

14.7  Suivi d'objet coloré

Détection et suivi d'une balle colorée

Détection de plusieurs balles colorées

Divers

  • Test de détection d'une balle colorée basé sur une analyse colorimétrique dans l'espace HSV

14.8  Reconnaissance et suivi de visage

14.9  Détection et suivi de la main et des doigts

Détection de la main et des doigts

Approche simplifiée de la détection des doigts

Suivi de la main et des doigts

  • Clavier numérique virtuel (utilise soustraction de fond)
  • Détection et suivi de la position des 5 doigts de la main (détection de contour et analyse de courbure de forme)
  • Application "paint" contrôlée par la main
  • Analyse du positionnement des doigts et annonce vocale du résultat numérique correspondant
  • Détection de forme de lettres et annonce vocale du résultat

14.10  Divers

  • Détection main par IR
  • Suivi mouvement oculaire
  • Suivi pointeur laser
  • Détection / suivi des carreaux de carrelage (sol)
  • Détection de portes

Codes Javacv Inline

Codes Processing utilisant les fonctions javacv "in-line"

14.11  Les objets fondamentaux "statiques" d'OpenCV

Objet IplIMage (conteneur d'image natif OpenCV)

Filtrage d'image simples

Objet CvMat (Matrice 1 à n Dimensions).

14.12  Les objets fondamentaux "dynamiques" d'OpenCV

Détection de contours

  • Détecter les contours d'une image (cvFindContours puis cvDrawContours)
  • Récupérer les données du contour à partir du CvSeq

14.13  Techniques et stratégies utiles

Techniques de soustraction du fond
Approche simplifiée
Approche plus avancée

15.  Communications Serveur/Client avec Processing

16.  Mathématique avec Processing

3D avec Processing

17.  3D avec Processing

ARToolkit avec Processing

18.  ARToolkit : réalité augmentée et 3D positionning avec Processing

Introduction

ARToolkit : mes codes Processing de réalité augmentée

Premiers essais

Mes codes de réalité augmentée

ARToolkit : mes codes Processing pour suivi par webcam

  • ARToolkit avec Processing : Détection du centre et du type d'un marker à partir d'un flux vidéo webcam
  • ARToolkit avec Processing : Détection du centre et du type de 2 markers à partir d'un flux vidéo webcam et tracé d'une ligne virtuelle
  • ARToolkit avec Processing : Asservissement d'une webcam Pan sur le centre d'un marker détecté à partir d'un flux vidéo webcam
  • ARToolkit avec Processing : Asservissement d'une webcam Pan/Tilt sur le centre d'un marker détecté à partir d'un flux vidéo webcam
  • ARToolkit avec Processing : Détection de la rotation dans l'axe Z d'un marker à partir d'un flux vidéo webcam

ARToolkit : mes codes Processing pour positionnement 3D en robotique

19.  Animations avec Processing

20.  Mes programmes Processing pour Arduino

Interface GUI vers Arduino

ModeleOutilsProcessing