API pylon C++ : réduisez considérablement le temps de développement
Grâce à l'API C++ de pylon, les développeurs gagnent 80 % de temps de développement lorsqu'ils programment en C++ par rapport à d'autres SDK. Ce tutoriel vous montre comment, en quelques lignes de code seulement dans le pylon Viewer, accéder aux caméras et les configurer pour un prototypage rapide avec acquisition d'images initiale. Nous fournissons des outils d'aide à la configuration, au traitement et à l'optimisation, ainsi que des exemples de code. Une fois terminé, votre code est facilement transposable sur d'autres systèmes d'exploitation grâce à l'utilisation de la même API.
Temps de lecture : environ 12 Minutes
Conditions préalables
Veuillez prendre note des points suivants afin de vous familiariser rapidement avec l'API pylon C++ et d'exploiter au mieux les exemples et les outils fournis.
Maîtrise approfondie du C++ : l'API présente un certain niveau de complexité technique et nécessite une bonne compréhension du C++ et de la programmation orientée objet.
Logiciel pylon (SDK) installé : comprend l'API C++, la documentation, des guides de programmation, des outils (par exemple, Pylon Viewer) et de nombreux exemples de programmes
Systèmes d'exploitation pris en charge : pylon est disponible sur plusieurs plateformes (Windows, Linux, Linux ARM, macOS) ; il convient donc de configurer un environnement de développement adapté.
Accès à une caméra compatible (facultatif, mais recommandé) : une caméra compatible est utile pour les exercices pratiques et les tests, mais il n'est pas indispensable pour commencer.
Aide et exemples de code
Le pylon Viewer pour le développement et le débogage :
Affichage de tous les paramètres de la caméra, y compris leurs propriétés et leurs valeurs actuelles
Menu contextuel : clic droit sur le paramètre → Aide → Documentation du produit → code complet copiable
De plus, vous trouverez les éléments suivants dans le menu Aide :
Guide du programmeur C++ – Votre assistant de développement pour divers langages de programmation
Manuel des exemples de pylon SDK, comprenant des descriptions détaillées des exemples de code disponibles pour les paramètres de caméra et les cas d'utilisation courants ; intégration facile du code dans votre propre application

Architecture de l'API pylon C++
L'API C++ de pylon se compose de plusieurs modules :
Classes Instant Camera de pylon : composant central de l'API → Accès à l'objet caméra et à ses fonctionnalités, tant pour les systèmes à caméra unique que pour les systèmes multi-caméras ( Instant Camera Classes Array)
Classes de gestionnaires d'événements : configurer les caméras avec un minimum de code, traiter les images acquises et afficher les événements des caméras
Implémentation GenICam : afficher toutes les fonctionnalités actuelles de la caméra dans pylon
Couche de transport : connexion aux pilotes de pylon → Recenser les caméras, créer des objets caméra
Usine de couches de transport générale
Couches de transport spécifiques liées à l'interface
Classes utilitaires pour la gestion des images : affichez et enregistrez des images en une seule ligne de code, convertissez les formats de pixels, utilisez des encodeurs pour les enregistrements vidéo et décompressez des images

Utilisation des fonctionnalités GenICam dans pylon
Les fonctionnalités de chacune de nos caméras sont décrites dans un (ou plusieurs) fichier(s) XML GenICam contenant entre 400 et 500 paramètres.
Lorsque la caméra est ouverte, pylon télécharge automatiquement ces fichiers XML sur le PC et génère dynamiquement une carte des fonctionnalités (INodeMap) à partir de ceux-ci. Cette carte offre un accès structuré et normalisé à toutes les fonctionnalités prises en charge par la caméra.
Accès centralisé aux caméras grâce aux classes de caméras instantanées
Grâce à ces deux classes de caméra, vous pouvez accéder aux fonctionnalités de la caméra via l'objet caméra : acquisition d'images, paramètres de la caméra, connexion de la caméra et gestion de la mémoire tampon. Une seule ligne de code suffit pour obtenir votre première image. Les systèmes à caméras multiples sont pris en charge via un seul objet de tableau de caméras (CInstantCameraArray).
CInstantCamera
Classe entièrement générique basée sur GenICam, le fondement de pylon Viewer
Ne connaît pas les interfaces ou les paramètres spécifiques aux caméras
On accède aux paramètres de la caméra via une INodeMap dynamique
Compatible avec toutes les caméras, interfaces et paramètres
Avantages : nécessite moins de mises à jour de pylon ; évolutif pour les nouvelles interfaces ou les nouveaux types de caméras
Inconvénients : programmation plus complexe, coûts de développement plus élevés à court terme
CBaslerUniversalInstantCamera
Généré et mis à jour à chaque nouvelle version de pylon → sur la base des derniers fichiers XML GenICam pour toutes les caméras Basler
Connaît et prend en charge les dernières caméras, interfaces et paramètres Basler
Accès aux paramètres natifs via la classe
Une configuration plus simple de la caméra grâce à une API statique (membres statiques pour les paramètres de la caméra) et à la fonction d'auto-complétion de l'IDE
Avantages : le prototypage et la configuration de la caméra sont plus simples et plus rapides grâce à un accès direct aux paramètres ; réduction des efforts de développement
Inconvénients : mises à jour régulières de pylon pour l'ajout de nouvelles fonctionnalités
Exemple de code pour l'acquisition initiale d'images
Regardez la vidéo pour découvrir comment configurer tous les paramètres en quelques lignes de code seulement afin d'acquérir vos premières images à l'aide d'une seule caméra ou d'un système multi-caméras :
Répertorier, ouvrir et configurer les caméras
Gérer automatiquement les tampons
Accéder à plusieurs caméras via un seul objet caméra
Pour plus d'informations et des exemples de code, consultez le Guide du programmeur C++.
Couche de transport pour l'énumération des caméras
Vous pouvez répertorier les caméras et créer des objets caméra à l'aide de la couche de transport générique et des couches de transport spécifiques. Pour accéder aux paramètres des caméras, vous pouvez utiliser les deux méthodes décrites ci-dessus via les deux Instant Camera Classes.
Usine de couches de transport (CTlFactory)
Point d'entrée générique
Répertorier les caméras, quelle que soit leur interface
Créer des couches de transport spécifiques
Créer des objets caméra en tant que périphériques pylon
Couches de transport (ITransportLayer)
Couches de transport spécifiques à une interface (par exemple, GigE Vision)
Répertorier les caméras d'une interface spécifique
Créer des objets caméra en tant que périphériques pylon pour la couche de transport existante
Récupérer les paramètres spécifiques à l'interface (par exemple, les commandes d'action GigE)
Exemple de code pour l'énumération des caméras
Dans cette vidéo, vous apprendrez à utiliser quelques lignes de code pour répertorier les caméras à l'aide de différentes techniques et à créer un objet caméra, en utilisant à la fois la couche de transport générique et la couche de transport spécifique.
Il est également possible de répertorier les caméras par leur adresse IP (GigE), leur identifiant utilisateur ou leur numéro de série.
Pour plus d'informations et des exemples de code, consultez le Guide du programmeur C++.
Accès aux paramètres génériques
(CInstantCamera)
Charger l'INodeMap et créer les nœuds (c'est-à-dire les paramètres de caméra) à partir de celle-ci
Flexible et évolutif pour l'intégration de nouvelles interfaces et fonctionnalités
Effort personnel nécessaire pour rechercher des informations sur les paramètres et les propriétés
Les fonctions d'aide intégrées permettent de réduire la quantité de code source à écrire
Accès aux paramètres natifs
(CBaslerUniversalInstantCamera)
Accès direct aux paramètres courants de la caméra (ouvrez d'abord la caméra)
Il n'est pas nécessaire de créer des INodeMaps
Commencez rapidement et facilement
Exemple de code pour les paramètres de la caméra
La vidéo explique comment accéder aux paramètres de la caméra à l'aide des approches générique et native, avec des exemples de code.
Pour plus d'informations et des exemples de code, consultez le Guide du programmeur C++.
Gestionnaires d'événements et classes utilitaires
Les gestionnaires d'événements permettent de configurer les caméras avec un minimum de code, de traiter les images acquises et d'afficher les événements liés aux caméras.
Les classes utilitaires remplissent des fonctions très variées. Dans cette vidéo, nous allons vous en présenter trois.
Classes de gestionnaires d'événements
Les classes « Instant Camera » contiennent trois classes de gestionnaires d'événements prédéfinies.
Gestionnaire de configuration : configuration de la caméra, par exemple les modes d'acquisition d'images ou de déclenchement (4 modes sont préconfigurés : acquisition d'images en mode image unique et en mode continu, déclenchement logiciel, commandes d'action GigE)
Gestionnaire d'événements d'image : traitement des images acquises
Gestionnaire d'événements de la caméra : affichage des événements liés à l'appareil photo, par exemple la fin de l'exposition
Cette vidéo vous montre comment configurer une caméra en quelques lignes de code.
Les gestionnaires de configuration peuvent être réutilisés pour des cas d'utilisation similaires. Comme ils sont fournis sous forme de fichiers d'en-tête, il vous suffit de copier et de modifier le code pour créer vos propres gestionnaires de configuration, par exemple pour des déclencheurs matériels.
Classes utilitaires
CPylonImage
Gérer automatiquement les tampons (taille, durée de vie)
Utiliser des tampons propres ou externes
Enregistrer ou charger les formats d'image courants (BMP, TIFF, JPG, PNG, RAW)
Modifiez facilement des images 2D et des zones d'intérêt (par exemple, des miniatures de défauts)
Persistance des fonctionnalités
Enregistrez l'intégralité de la configuration de la caméra et chargez-la facilement sur d'autres caméras
CVideoWriter
Enregistrer des vidéos MPEG-4 avec un minimum de code source
Enregistrer les images acquises (séquences d'images) dans un fichier vidéo
Dans cette vidéo, nous vous présentons trois classes utilitaires. Pour plus d'informations sur les autres classes, consultez les exemples du SDK (accessibles via le menu Aide).
Démonstration : Configuration d'un projet pylon dans Visual Studio
Dans cette démonstration, vous apprendrez à créer un projet pylon dans Visual Studio en partant de zéro :
Rechercher, ouvrir et configurer une caméra (ou une émulation de caméra)
Capturez, affichez et enregistrez des images en seulement cinq minutes
Le Guide du programmeur C++ (accessible depuis le menu Aide) vous guidera pas à pas tout au long du processus.



