Résolu sur le forum : Borne Wallbox Pulsar Plus 7,4 kW sur abonnement 6 kVA : quel délestage avant accord copro (urgent)Ma panne diagnostiquée — réponse sous 48 h29 €

Javacv : librairie java implémentant la librairie opensource C/C++ OpenCV.

Électroniquemis à jour le 22 avril 2023

JavaCV est une librairie Java qui permet aux développeurs de créer des applications d’intelligence artificielle et de vision par ordinateur en utilisant la librairie open source C/C++ OpenCV. Cette librairie offre aux développeurs une variété d’outils et de fonctionnalités pour créer des applications d’intelligence artificielle et de vision par ordinateur. Elle permet aux développeurs de créer des applications qui peuvent analyser des images et des vidéos, détecter des objets et des visages, et même reconnaître des mouvements. JavaCV est une librairie puissante et facile à utiliser qui peut aider les développeurs à créer des applications d’intelligence artificielle et de vision par ordinateur plus efficaces et plus robustes.

Javacv : librairie java implémentant la librairie opensource C/C++ OpenCV.

Introduction

  • Cette librairie est une implémentation en Java de la librairie OpenCV. Elle permet ainsi de réaliser en Java du traitement d’image avancé et dispose de plusieurs milliers de fonctions dédiées. Les utilisations typiques possibles :
    • traitements d’image de base (flou, seuillage, filtre Guaussien, Sobel)
    • algorithmes d’analyse d’image (reconnaissance de lignes, de cercle)
    • détection de contour
    • reconnaissance et suivi d’objet
  • Je présente cette librairie , car elle est utilisable telle quelle sous Processing, et permet donc de disposer dans Processing de toutes les fonctions de la librairie OpenCV !! Personnellement, je trouve cette librairie tout simplement « géniale » en ce sens qu’elle rend le développement à partir de centaines de fonctions natives OpenCV très simple, tout comme on écrirait un programme Processing classique. Il suffit d’écrire son code, lancer l’exécution, voir le résultat, modifier le code, etc… Très simple et très souple ! Certes, cette librairie ne dispense pas de la prise en main des fonctions natives OpenCV, mais elle en permet une mise en oeuvre particulièrement simplifiée et efficace.
  • J’ai par ailleurs écrit une librairie pour Processing, la librairie javacvPro, basée sur les fonctions de la librairie javacvPro qui reprend les plupart des fonctions de la librairie existante OpenCv pour Processing (voir : http://ubaa.net/shared/processing/opencv/) tout en y ajoutant d’autres fonctions utiles, notamment filtre de détection de contour (Sobel, Canny), analyse de contour, détection de formes (Hough), etc..

Liens essentiels

  • Présentation wikipédia d’OpenCV : http://fr.wikipedia.org/wiki/OpenCV
  • Le site officiel : http://opencv.willowgarage.com/wiki/ (willowgarage est une société de robotique californienne qui maintient la librairie depuis 2010)
  • La documentation de la 2.3.1 : http://opencv.itseez.com/ (Itseez est une startup qui supporte OpenCV)
  • La librairie javacv, implémentation Java de la librairie openCV : http://code.google.com/p/javacv/ Cette librairie implémente en langage Java l’ensemble des fonctions et objets de la librairie openCV (écrite en C/C++) en langage Java. Cette librairie permet d’accéder relativement simplement aux fonctions d’openCV directement dans Processing notamment.
  • La librairie javacv repose sur la librairie javacpp du même auteur : http://code.google.com/p/javacpp/ Cette librairie fait le « pont » entre le langage C/C++ dans lequel est écrite la librairie openCV et le langage Java (dans lequel est écrit l’interface Processing notamment). Cette librairie est un véritable « chaînon » entre ces mondes et est quasiment « magique ».
  • Au final, on accède ainsi en java et surtout dans Processing, à plusieurs milliers de fonctions et algorithmes avancés, rapides, pour réaliser du traitement d’image élaboré.

Installation et utilisation de javacv

Installation de javacv dans Processing

Utilisation avancée dans IDE Eclipse

  • Ecrire un programme utilisant javacv dans Eclipse
  • Modifier/compiler les sources de javacv dans Eclipse

Ma librairie javacvPro

  • Une fois les fonctions d’OpenCV accessibles en Java et dans Processing, c’est très logiquement que vient l’envie de réaliser une librairie Processing avec des fonctions de traitement d’image simples à utiliser. C’est ce que j’ai commencé à faire…

Présentation de la librairie javacv

Codes Javacv Inline

Codes Processing utilisant les fonctions javacv « in-line »

  • Un premier programme de test d’utilisation de javacv dans Processing

Les objets fondamentaux « statiques » d’OpenCV

Objet IplIMage (conteneur d’image natif OpenCV)

  • Utiliser l’objet IplImage (conteneur d’image OpenCV) dans Processing
  • Redimensionner un objet IplImage (conteneur d’image OpenCV) dans Processing
  • Charger la même valeur dans tous les pixels un objet IplImage (conteneur d’image OpenCV) dans Processing
  • Convertir un objet IplImage 16SC3 (16 bits signés – 3 canaux) en un objet IplImage 8UC3 (8 bits non signé – 3 canaux)
  • Multiplier tous les pixels d’un objet IplImage 8UC3 (8 bits non signé – 3 canal) par une valeur (idem ou différente pour les différents canaux)
  • Convertir un objet IplImage RGB en un IplImage en niveaux de gris
  • Appliquer un seuillage sur un IplImage
  • Extraire les canaux RGB d’un IplImage et reconstruire l’IplImage à partir des canaux RGB indivuels
  • Récupérer les valeurs d’un pixel d’un IplImage
  • Modifier la valeur d’un pixel d’un IplImage
  • Inverser les pixels d’une IplImage
  • Récupérer un IplImage dans un ByteBuffer
  • Transférer un IplImage vers un PImage
  • Inversement, transférer un PImage vers un IplImage
  • Test des temps de transfert d’un IplImage dans un PImage et vice-versa.
  • Conversion d’un IplImage d’un type dans un autre type.

Filtrage d’image simples

  • Test des fonctions d’effet « flou » de javacv dans Processing?

Objet CvMat (Matrice 1 à n Dimensions).

  • Déclarer et initialiser un objet CvMat
  • CvMat et utilisation d’une Look-Up Table (LUT)
  • CvMat et utilisation d’un noyau de convolution personnalisé
  • CvMat et utilisation d’un noyau de convolution : réalisation d’un filtre de Sobel

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

Techniques et stratégies utiles

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

Ma librairie javacvPro

Présentation

  • Ma librairie javacvPro est une de mes premières librairie pour Processing. Il s’agit d’une implémentation simplifiée et facilitée dans Processing de la librairie javacv (de Samuel Audet). Ma librairie n’existerait pas sans javacv, une très grosse librairie qui implémente OpenCV en Java. Cette librairie permet ainsi l’accès au milliers de fonction d’OpenCV sous Processing (qui est écrit en Java) !
  • La librairie javacvPro repose avant tout sur 2 fonctions fondamentales que j’ai écrites qui permettent :
    • d’envoyer une PImage (conteneur image Processing) vers un objet IplImage (conteneur image d’OpenCV)
    • de récupérer un objet IplImage dans une PImage.
  • Cette librairie s’inspire de la librairie OpenCV pour Processing existante (basée sur OpenCV 1.0 – dernière mise à jour de 2008) : http://ubaa.net/shared/processing/opencv/ La plupart des fonctions disponibles de cette librairie sont (ou seront) reprises avec la même syntaxe pour l’utilisateur dans ma librairie javacvpro. Ceci dans un but de compatibilité des programmes écrits avec cette première librairie.
  • Ma librairie javacvPro reprend notamment les fonctions de détection de Blob avec la même syntaxe.
  • Par contre, ma librairie javacvPro vise à étendre beaucoup plus largement les possibilités actuelles d’utilisation d’OpenCV sous Processing, notamment en implantant :
    • les fonctions d’extractions de contour (Sobel, Canny,..)
    • les fonctions d’analyse de contour (analyse de convexité, recherche des points invariants, etc… )
  • A terme, j’espère pouvoir implémenter les algorithmes SURF ou MESH sous Processing.
  • Cette librairie est évidemment sous licence GPL v3 afin que tous puissent en profiter largement. J’espère ainsi apporter ma petite et modeste contribution au magnifique projet Processing initié par le MIT.

La libairie : téléchargement, installation.

Référence de la librairie javacvPro

  • Ma librairie OpenCV : la librairie javacvPro.

Codes JavacvPro

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

Présentation

  • La dernière version de ma librairie JavacvPro est ici : Ma librairie OpenCV : la librairie javacvPro. Cette librairie implémente dès à présent près de 70 fonctions opérationnelles et je l’enrichis progressivement.
  • Installation : Voir : Ma librairie OpenCV : la librairie javacvPro.

Exemples d’utilisation de base.

  • Le programme minimum.
  • Test du temps d’exécution des fonctions javacvPro.

Traitement d’image « statique » : Les programmes d’exemple de la référence.

Traitement d’image de base

  • blur()
  • brightness()
  • contrast()
  • flip()
  • gray()
  • invert()
  • multiply()
  • setBrightnessContrast()
  • smooth()

Traitement d’image avancé

  • threshold()
  • mixerRGB()
  • mixerRGBGray()

Traitement entre 2 images

  • absDiff()

Extraction de contours

  • canny()
  • sobel()
  • scharr()
  • sobel2()

Détection objet/visage

  • cascade()
  • detect()
  • drawRectDetect()

Détection de formes

  • blobs()
  • drawBlobs()
  • drawCentroidBlobs()
  • drawRectBlobs()
  • selectBlobs()
  • selectBallBlobs()

Analyse avancée de formes

  • drawConvexPoints()
  • drawConvexityDefect()

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
  • Affichage simple d’un flux vidéo issu d’une webcam
Reconnaissance et suivi de visage
  • Capture d’un flux vidéo avec GSVideo et test simple reconnaissance de visage par traitement d’image avec ma librairie JavacvPro (0penCV sous Processing)
Suivi d’objet coloré

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

  • Sur un flux vidéo
    • Capture d’un flux vidéo avec GSVideo et reconnaissance de balle par traitement d’image et reconnaissance visuelle avec ma librairie JavacvPro (0penCV sous Processing) (dans l’espace couleur RGB)
    • Suivi de balle avec ma librairie JavacvPro (0penCV sous Processing) : réalisation d’un « Joystick » virtuel (RGB)
    • Suivi de balle colorée : réalisation d’un clavier virtuel (RGB)
  • Sur plusieurs flux vidéos
    • Capture d’un triple flux vidéo (webcams x3) avec GSVideo et reconnaissance de balle sur chaque flux vidéo par traitement d’image et reconnaissance visuelle avec openCV (RGB)

Détection de plusieurs balles colorées

  • Comptage de balles de la même couleur avec annonce vocale du résultat? Ubuntu (RGB)
  • Détection et comptage de balles de couleurs différentes avec annonce vocale du résultat? Ubuntu (RGB)

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

  • Suivi de balle : Estimation de la fréquence d’envoi réelle d’une chaine de commande sur le port Série par Processing

1 tourelle Pan

  • Suivi de balle par une webcam fixée sur une tourelle pan contrôlée par 1 servomoteur ( rapide – utilise librairie GSVideo pour la capture video et reconnaissance visuelle par ma librairie JavacvPro (0penCV sous Processing) )
  • Suivi de marker ARToolkit miniature par une tourelle Pan

2 tourelles Pan (2 servomoteurs)

  • Suivi de balle colorée par 2 tourelles Pan

1 tourelle Pan-Tilt (2 servomoteurs)

  • Suivi de balle par une webcam fixée sur une tourelle pan/tilt contrôlée par 2 servomoteur? ( rapide – utilise librairie GSVideo pour la capture video et reconnaissance visuelle par ma librairie JavacvPro (0penCV sous Processing) )
  • Suivi de marker ARToolkit miniature par une tourelle Pan/Tilt
  • Tracking de visage avec une tourelle pan-tilt par reconnaissance visuelle de visage

2 tourelles Pan-Tilt (4 servomoteurs)

  • Vision binoculaire : Suivi de balle par 2 webcams fixées chacune sur une tourelle pan contrôlée chacune par 1 servomoteur? (rapide – utilise librairie GSVideo pour la capture video et reconnaissance visuelle par ma librairie JavacvPro (0penCV sous Processing) )
  • Suivi de balle colorée par 2 tourelles Pan/Tilt

Bras robotisé

  • Préhension de balle au bras robotisé 5 servomoteurs à partir repérage de balle par webcam (capture avec librairieGSVideo + reconnaissance visuelle par ma librairie JavacvPro (0penCV sous Processing)) et interface Processing de contrôle? TOP
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
  • Voir aussi : Stratégies pour la soustraction du fond

Approche simplifiée

  • JavacvPro : Soustraction du fond sur un flux vidéo webcam par différence absolue
  • Soustraction du fond d’un flux vidéo par différence absolue avec mémorisation de n frames du fond
  • Soustraction du fond d’un flux vidéo par différence absolue frame à frame (détection de mouvement)

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

  • Sur fond uni :
    • Processing – GSVideo + openCV avec javacvPro : Capture d’un flux webcam par GSVideo et détection de la forme de la main sur un fond uni
    • Processing – GSVideo + openCV avec javacvPro : Capture d’un flux webcam par GSVideo, détection de la forme de la main sur un fond uni et affichage des « creux » (convexity defect) du contour. TOP!
    • Processing – GSVideo + openCV avec javacvPro : Capture d’un flux webcam par GSVideo, détection de la forme de la main sur un fond uni et sélection des « creux » significatifs (convexity defects) TOP!
    • Processing – GSVideo + openCV avec javacvPro : Capture d’un flux webcam par GSVideo, détection de la forme de la main sur un fond uni, sélection des « creux » significatifs (convexity defects), analyse de la position des doigts et annonce vocale du chiffre correspondant TOP!
  • Sur fond quelconque :
    • Détection de la main par soustraction d’un fond varié
    • Détection de la main par soustraction « frame à frame » (Détection de mouvement)
  • Par segmentation de la peau :
    • Détection de la main par segmentation de la peau (résultat médiocre)

Approche simplifiée de la détection des doigts

  • Détection simplifiée de l’index tendu, de l’auriculaire et du pouce ouverts?
  • « Souris virtuelle » à l’aide d’une simple webcam et d’une feuille de papier. ( utilise classe Java Robot)

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
  • Processing – GSVideo + openCV avec javacvPro : Capture d’un flux webcam par GSVideo, détection de la forme de la main sur un fond uni, sélection des « creux » significatifs (convexity defects), analyse de la position des doigts et annonce vocale du chiffre correspondant TOP!
  • Détection de forme de lettres et annonce vocale du résultat
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

ModeleProgJavacvInline

Donnez votre avis

Soyez le 1er à noter cet article
ou bien laissez un avis détaillé


Partagez cet article maintenant !


Ça ne règle pas votre cas ?

Décrivez la panne sur le forum, avec une photo si vous pouvez : les membres qui ont eu la même répondent, et le sujet reste pour les suivants.

Avatar photoAvatar photoAvatar photoAvatar photoAvatar photoRejoindre les 54 membres — gratuit, 44 pannes résolues

Dans le même tiroir

http://web.archive.org/web/20210804223007/https://www.mon-club-elec.fr/pmwiki_mon_club_elec/pmwiki.php?n=MAIN.ArduinoExpertCapteursComplexesDS18B20
Électronique

GLAP-Box : Procédure : Ubuntu : …

La GLAP-Box est une solution de déploiement et de gestion des systèmes d'exploitation basée sur Ubuntu. Elle permet aux utilisateurs…

Portrait de Inès DameronInès Dameron · 21 Avr 2023

Réagissez à cet article

La lettre du club

Une lettre par mois, accrochée au panneau

Les sujets du forum résolus dans le mois, un guide, un chiffre qu’on peut vérifier chez soi. Rien d’autre, jamais plus souvent — et on se désabonne d’un clic.

Ce qu’il y a dedans

Votre adresse

Une lettre par mois. Désabonnement en un clic.

Partagez votre réaction