pylon C++ API: Entwicklungszeit deutlich reduzieren
Mit der pylon C++ API sparen Entwickler 80 % Entwicklungszeit bei der Programmierung mit C++ im Vergleich zu anderen SDKs ein. Das Tutorial zeigt auf, wie Sie im pylon Viewer bereits mit wenig Code Kameras ansprechen und für ein schnelles Prototyping mit erster Bildakquise konfigurieren. Wir liefern unterstützende Tools für Konfiguration, Verarbeitung und Optimierung sowie Beispielcode. Ihr fertiggestellter Code ist – wegen derselben API – einfach auf andere Betriebssysteme übertragbar.
Lesedauer: ca. 9 Minuten
Voraussetzungen
Beachten Sie folgende Punkte, um mit der pylon C++ API schnell produktiv zu arbeiten und die bereitgestellten Beispiele sowie Tools effektiv zu nutzen.
Solide Kenntnisse in C++: Die API ist technisch anspruchsvoll und setzt ein gutes Verständnis von C++ sowie objektorientierter Programmierung voraus.
Installierte pylon Software (SDK): Enthält die C++ API, Dokumentation, Programmierleitfäden, Tools (z. B. pylon Viewer) sowie zahlreiche Beispielprogramme
Unterstütztes Betriebssystem: pylon ist plattformübergreifend verfügbar (Windows, Linux, Linux ARM, macOS), sodass eine entsprechende Entwicklungsumgebung eingerichtet sein sollte.
Zugriff auf kompatible Kamera-Hardware (optional, aber empfohlen): Für praktische Übungen und Tests ist eine unterstützte Kamera hilfreich, jedoch nicht zwingend für die ersten Schritte.
Hilfestellungen und Beispielcode
Der pylon Viewer für Entwicklung und Debugging:
Anzeige aller Kameraparameter inklusive ihrer Eigenschaften und aktuellen Werte
Kontext-Hilfe: Rechtsklick Parameter → Get Help → Produktdokumentation → kopierbarer kompletter Code
Zusätzlich finden Sie im Help-Menü:
C++ Programmer’s Guide – Ihr Entwicklungsassistent für verschiedene Programmiersprachen
pylon SDK Samples Manual mit detaillierten Beschreibungen verfügbarer Beispielcodes für Kameraparameter und typischer Use Cases; einfache Übernahme des Codes in die eigene Anwendung

pylon C++ API-Architektur
Die pylon C++ API besteht aus mehreren Modulen:
pylon Instant Camera Classes: Zentrales Element der API → Zugriff auf Kameraobjekt und -funktionalitäten sowohl für eine Kamera als auch Multi-Kamerasysteme (Instant Camera Array Classes)
Event Handler Classes: Kameras mit wenig Code konfigurieren, erfasste Bilder verarbeiten und Kamera-Events anzeigen
GenICam Implementierung: Anzeige aller aktuellen Features einer Kamera in pylon
Transport Layer: Verbindung zu pylon Treibern → Kameras erfassen, Kameraobjekte erstellen
Allgemeiner Transport Layer Factory
Spezifische, schnittstellenbezogene Transport Layer
Utility Classes für Handhabung der Bilder: anzeigen und anhand einer Zeile Code speichern, Pixelformate umwandeln, Encoder für Video-Aufnahmen nutzen und Bilder dekomprimieren

GenICam Features in pylon nutzen
Die Funktionalität jeder unserer Kameras ist in einer (oder mehreren) GenICam XML-Datei mit 400 bis 500 Features beschrieben.
Beim Öffnen der Kamera lädt pylon diese XML-Dateien automatisch auf den PC und erzeugt daraus dynamisch eine Feature Map (INodeMap). Diese stellt alle von der Kamera unterstützten Features strukturiert zur Verfügung – für einen standardisierten Zugriff.
Zentraler Kamerazugriff mit Instant Camera Classes
Anhand der zwei Kameraklassen greifen Sie über das Kameraobjekt auf die Kamerafunktionalitäten zu, wie z.B. Bildaufnahme, Kameraparameter, Kameraverbindung und Puffer-Handling. Dazu müssen Sie keine Parameter setzen. Mit lediglich einer Zeile Code erhalten Sie ein erstes Bild. Multi-Kamerasysteme werden über ein einzelnes Kamera Array-Objekt (CInstantCameraArray) unterstützt.
CInstantCamera
Vollständig generische Klasse basierend auf GenICam, Grundlage des pylon Viewers
Kennt weder konkrete Kameraschnittstellen noch -parameter
Kameraparameter werden über eine dynamische INodeMap angesprochen
Funktioniert mit allen Kameras, Schnittstellen und Parametern
Vorteile: Benötigt weniger pylon Updates, zukunftssicher bei neuen Schnittstellen oder Kameratypen
Nachteile: Aufwändigere Programmierung, höhere kurzfristige Entwicklungskosten
CBaslerUniversalInstantCamera
Wird mit jedem pylon Release generiert und aktualisiert → basiert auf aktuellen GenICam XML-Dateien aller Basler Kameras
Kennt und unterstützt die aktuellen Basler Kameras, Schnittstellen und Parameter
Parameterzugriff nativ über die Klasse
Einfachere Kamerakonfiguration durch statische API (statische Member für Kameraparameter) und IDE Auto-Completion
Vorteile: Prototyping und Kamerakonfiguration durch direkten Parameter-Zugriff einfacher und schneller, geringerer Entwicklungsaufwand
Nachteil: Regelmäßige pylon Updates für neue Features
Beispielcode für erste Bildakquise
Verfolgen Sie im Video, wie Sie mit wenigen Zeilen Code alle Einstellungen erledigen, um erste Bilder mit einer Kamera und Multi-Kamerasystemen zu erfassen:
Kameras erfassen, öffnen und konfigurieren
Puffer automatisch verwalten
Mehrere Kameras über ein einzelnes Kameraobjekt ansprechen
Weitere Informationen und Codebeispiele enthält der C++ Programmer's Guide.
Transport Layer für Kameraerfassung
Anhand des generischen und der spezifischen Transport Layer lassen sich Kameras erfassen und Kameraobjekte erstellen. Um auf Kameraparameter zuzugreifen, gibt es die zwei oben beschriebenen Wege über die beiden Instant Camera Classes.
Transport Layer Factory (CTlFactory)
Generischer Einstiegspunkt
Kameras schnittstellenunabhängig erfassen
Spezifische Transport Layer erstellen
Kameraobjekte als pylon Devices erstellen
Transport Layers (ITransportLayer)
Schnittstellenspezifische Transport Layer (z. B. GigE Vision)
Kameras für eine bestimmte Schnittstelle erfassen
Kameraobjekte als pylon Devices für den bestehenden Transport Layer erstellen
Schnittstellenspezifische Parameter abrufen (z. B. GigE Action Commands)
Beispielcode für Kameraerfassung
Im Video lernen Sie, wie Sie mit wenig Code Kameras mit unterschiedlichen Techniken erfassen und ein Kameraobjekt erstellen, sowohl mit dem generischen als auch spezifischen Transport Layer.
Es ist auch möglich, Kameras über ihre IP-Adresse (GigE), User-ID oder Seriennummer zu erfassen.
Weitere Informationen und Codebeispiele enthält der C++ Programmer's Guide.
Generischer Parameter-Zugriff
(CInstantCamera)
INodeMap laden und daraus die Nodes (= Kameraparameter) erstellen
Flexibel und zukunftssicher bei Integration neuer Schnittstellen und Funktionen
Eigenaufwand bei der Suche nach Parameterinformationen und -eigenschaften
Integrierte Hilfefunktionen verringern den zu erstellenden Quellcode
Nativer Parameter-Zugriff
(CBaslerUniversalInstantCamera)
Direkter Zugriff auf bekannte Kameraparameter (davor Kamera öffnen)
Kein Erzeugen von INodeMaps erforderlich
Schneller und einfacher Einstieg
Beispielcode für Kameraparameter
Das Video erläutert den Zugriff auf die Kameraparameter über den generischen und nativen Ansatz mit Beispielcode.
Weitere Informationen und Codebeispiele enthält der C++ Programmer's Guide.
Event Handler und Utility Classes
Die Event Handler dienen dazu, Kameras mit wenig Code zu konfigurieren, die erfassten Bilder zu verarbeiten und Kamera-Events anzuzeigen.
Die Utility Classes nehmen vielfältige Aufgaben wahr. Drei Klassen stellen wir Ihnen im Video vor.
Event Handler Classes
Die Instant Camera Classes enthalten drei vordefinierte Event-Handler-Klassen.
Configuration Handler: Kamerakonfiguration, z.B. Bilderfassungs- oder Trigger-Modi (4 sind vorkonfiguriert: Einzelbild- und kontinuierliche Bilderfassung, Software-Trigger, GigE Action Commands)
Image Event Handler: Verarbeiten der erfassten Bilder
Camera Event Handler: Anzeige von Kamera-Events, z.B. Ende der Belichtung
Das Video zeigt Ihnen, wie mit wenig Code die Konfiguration einer Kamera gelingt.
Die Configuration Handler lassen sich für vergleichbare Anwendungsfälle wiederverwenden. Da sie als Header-Dateien bereitgestellt werden, können Sie den Code einfach kopieren und ändern, um Ihre eigenen Configuration Handler zu erstellen, z. B. für Hardware-Trigger.
Utility Classes
CPylonImage
Puffer automatisch verwalten (Größe, Lebensdauer)
Eigene oder externe Puffer verwenden
Gängige Bildformate speichern oder laden (BMP, TIFF, JPG, PNG, RAW)
2D-Bilder und Region of Interests (z.B. Thumbnail von Defekten) einfach bearbeiten
CFeaturePersistence
Komplette Kamerakonfiguration speichern und einfach in andere Kameras laden
CVideoWriter
MPEG-4-Videos mit wenig zu erstellendem Quellcode aufnehmen
Erfasste Bilder (Bildsequenzen) in eine Videodatei schreiben
Im Video stellen wir Ihnen drei Utility Classes vor. Informationen zu den übrigen Klassen finden Sie in den SDK-Beispielen (Aufruf im Help-Menü).
Demo: pylon Visual Studio-Projekt aufsetzen
In der Demo erfahren Sie, wie Sie ein pylon Visual Studio-Projekt von Grund auf aufsetzen:
Eine Kamera (oder Kamera-Emulation) finden, öffnen und konfigurieren
Bilder erfassen, anzeigen und speichern in nur fünf Minuten
Der C++ Programmer’s Guide (Aufruf im Help-Menü) begleitet Sie dabei Schritt für Schritt.



