Tutoriel

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

Tip

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 → AideDocumentation 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

Exemples du SDK C++ pour les paramètres de caméra, conçus pour obtenir des résultats rapides et pour être réutilisés dans votre propre application.
Exemples du SDK C++ pour les paramètres de caméra, conçus pour obtenir des résultats rapides et pour être réutilisés 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

L'API C++ de pylon se compose de plusieurs modules
Structure de l'API C++ de pylon

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.

Plus d'informations

Comment pouvons-nous vous aider ?

Nous nous ferons un plaisir de vous conseiller sur le choix des produits et de trouver la bonne solution pour votre application.