API pylon C++: Riduzione significativa dei tempi di sviluppo
Grazie all'API C++ di pylon, gli sviluppatori risparmiano l'80% del tempo di sviluppo quando programmano in C++ rispetto ad altri SDK. Questo tutorial illustra come utilizzare poche righe di codice nel pylon Viewer per accedere alle telecamere e configurarle per la prototipazione rapida con acquisizione iniziale delle immagini. Forniamo strumenti di supporto per la configurazione, l'elaborazione e l'ottimizzazione, oltre a codice di esempio. Il codice finale è facilmente trasferibile su altri sistemi operativi utilizzando la stessa API.
Tempo di lettura: circa 11 Minuti
Prerequisiti
Si prega di tenere presente quanto segue per acquisire rapidamente familiarità con l'API C++ di Pylon e sfruttare al meglio gli esempi e gli strumenti messi a disposizione.
Ottima conoscenza del C++: l'API è tecnicamente complessa e richiede una solida conoscenza del C++ e della programmazione orientata agli oggetti.
Software pylon installato (SDK): include l'API C++, la documentazione, le guide di programmazione, gli strumenti (ad es. Pylon Viewer) e numerosi programmi di esempio
Sistemi operativi supportati: pylon è disponibile su diverse piattaforme (Windows, Linux, Linux ARM, macOS), pertanto è necessario configurare un ambiente di sviluppo adeguato.
Accesso a una telecamera compatibile (facoltativo, ma consigliato): una telecamera supportata è utile per le esercitazioni pratiche e i test, ma non è necessaria per iniziare.
Aiuto e codice di esempio
Il pylon Viewer per lo sviluppo e il debug:
Visualizzazione di tutti i parametri della telecamera, comprese le relative proprietà e i valori attuali
Menu contestuale: clicca con il tasto destro su Parametro → Aiuto → Documentazione del prodotto → codice completo copiabile
Inoltre, nel menu 'Aiuto troverai quanto segue:
Guida per programmatori C++ – Il tuo assistente di sviluppo per diversi linguaggi di programmazione
Manuale degli esempi dell'SDK pylon, con descrizioni dettagliate dei codici di esempio disponibili per i parametri della telecamera e i casi d'uso tipici; facile integrazione del codice nella propria applicazione

Architettura dell'API pylon in C++
L'API C++ di pylon è composta da diversi moduli:
Classi Instant Camera di pylon: componente fondamentale dell'API → Accesso all'oggetto telecamera e alle relative funzionalità sia per i sistemi a telecamera singola che per quelli multi-telecamera (classi Instant Camera Array)
Classi di gestione degli eventi: configurare le telecamere con poche righe di codice, elaborare le immagini acquisite e visualizzare gli eventi delle telecamere
Implementazione GenICam: visualizza tutte le caratteristiche attuali della telecamera in pylon
Livello di trasporto: connessione ai driver di pylon → Enumerazione delle telecamere, creazione degli oggetti telecamera
Fabbrica generica del livello di trasporto
Livelli di trasporto specifici relativi all'interfaccia
Classi di utilità per la gestione delle immagini: visualizza e salva le immagini con una sola riga di codice, converti i formati pixel, utilizza codificatori per le registrazioni video e decomprimi le immagini

Utilizzo delle funzionalità GenICam in pylon
Le funzionalità di ciascuna delle nostre telecamere sono descritte in uno (o più) file XML GenICam contenenti da 400 a 500 caratteristiche.
All'apertura della telecamera, pylon scarica automaticamente questi file XML sul PC e genera dinamicamente una mappa delle funzionalità (INodeMap) a partire da essi. Questa mappa offre un accesso strutturato e standardizzato a tutte le funzionalità supportate dalla telecamera.
Accesso centralizzato alle telecamere con le classi di telecamere istantanee
Utilizzando le due classi relative alle telecamere, è possibile accedere alle funzionalità delle telecamere tramite l'oggetto telecamera: acquisizione delle immagini, parametri della telecamera, connessione della telecamera e gestione del buffer. Non è necessario impostare alcunparametro per farlo. Basterà una sola riga di codice per ottenere la prima immagine. I sistemi multicamera sono supportati tramite un unico oggetto array di telecamere (CInstantCameraArray).
CInstantCamera
Classe completamente generica basata su GenICam, il fondamento del pylon Viewer
Non conosce le interfacce o i parametri specifici delle telecamere
È possibile accedere ai parametri della telecamera tramite una INodeMap dinamica
Funziona con tutte le telecamere, le interfacce e i parametri
Vantaggi: richiede un numero inferiore di aggiornamenti di pylon; è a prova di futuro per nuove interfacce o tipi di telecamere
Svantaggi: programmazione più complessa, costi di sviluppo più elevati nel breve termine
CBaslerUniversalInstantCamera
Generato e aggiornato ad ogni nuova versione di pylon → basato sui file XML GenICam più recenti per tutte le telecamere Basler
Conosce e supporta le più recenti telecamere, interfacce e parametri Basler
Accesso ai parametri nativi tramite la classe
Configurazione più semplice della telecamera grazie a un'API statica (membri statici per i parametri della telecamera) e al completamento automatico nell'IDE
Vantaggi: la prototipazione e la configurazione della telecamera risultano più semplici e veloci grazie all'accesso diretto ai parametri; minore impegno di sviluppo
Svantaggi: aggiornamenti periodici del pylon per l'introduzione di nuove funzionalità
Codice di esempio per l'acquisizione iniziale delle immagini
Guarda il video per scoprire come configurare tutte le impostazioni con poche righe di codice e acquisire le tue prime immagini utilizzando una singola telecamera o sistemi multicamera:
Elencare, aprire e configurare le telecamere
Gestisci automaticamente i buffer
Accedere a più telecamere tramite un unico oggetto telecamera
Per ulteriori informazioni ed esempi di codice, consultare la Guida per i 'programmatori C++.
Livello di trasporto per l'enumerazione delle telecamere
È possibile enumerare le telecamere e creare oggetti telecamera utilizzando il livello di trasporto generico e i livelli di trasporto specifici. Per accedere ai parametri delle telecamere, è possibile utilizzare i due metodi descritti sopra tramite le due classi di telecamere istantanee.
Fabbrica del livello di trasporto (CTlFactory)
Punto di accesso generico
Elencare le telecamere indipendentemente dall'interfaccia
Creare livelli di trasporto specifici
Crea oggetti telecamera come dispositivi pylon
Livelli di trasporto (ITransportLayer)
Livelli di trasporto specifici per interfaccia (ad es. GigE Vision)
Elencare le telecamere associate a una determinata interfaccia
Creare oggetti "camera" come dispositivi "pylon" per il livello di trasporto esistente
Recuperare i parametri specifici dell'interfaccia (ad es. comandi di azione GigE)
Codice di esempio per l'enumerazione delle telecamere
In questo video imparerai' come utilizzare poche righe di codice per enumerare le telecamere utilizzando diverse tecniche e creare un oggetto telecamera, avvalendoti sia del livello di trasporto generico che di quello specifico.
È inoltre possibile selezionare le telecamere in base al loro indirizzo IP (GigE), all'ID utente o al numero di serie.
Per ulteriori informazioni ed esempi di codice, consultare la Guida per i 'programmatori C++.
Accesso ai parametri generici
(CInstantCamera)
Caricare l'INodeMap e creare i nodi (ovvero i parametri della telecamera) a partire da essa
Flessibile e a prova di futuro nell'integrazione di nuove interfacce e funzionalità
Impegno personale richiesto per la ricerca di informazioni sui parametri e sulle proprietà
Le funzioni di aiuto integrate riducono la quantità di codice sorgente da scrivere
Accesso ai parametri nativi
(CBaslerUniversalInstantCamera)
Accesso diretto ai parametri comuni della telecamera (aprire prima la telecamera)
Non è necessario creare INodeMap
Inizia in modo semplice e veloce
Codice di esempio per i parametri della telecamera
Il video spiega come accedere ai parametri della telecamera utilizzando l'approccio generico e quello nativo, con l'ausilio di codice di esempio.
Per ulteriori informazioni ed esempi di codice, consultare la Guida per i 'programmatori C++.
Gestori di eventi e classi di utilità
Gli handler di eventi vengono utilizzati per configurare le telecamere con un codice minimo, elaborare le immagini acquisite e visualizzare gli eventi delle telecamere.
Le classi di utilità svolgono una vasta gamma di compiti. In questo video ve ne presenteremo tre.
Classi di gestione degli eventi
Le classi delle telecamere istantanee contengono tre classi di gestori di eventi predefinite.
Gestione delle impostazioni: configurazione della telecamera, ad esempio modalità di acquisizione delle immagini o di attivazione (4 modalità preconfigurate: acquisizione di immagini singole e in sequenza, attivazione tramite software, comandi GigE Action)
Gestore eventi immagini: elaborazione delle immagini acquisite
Gestore degli eventi della telecamera: visualizzazione degli eventi della telecamera, ad esempio la fine dell'esposizione
Questo video ti mostra come configurare correttamente una telecamera con poche righe di codice.
I gestori di configurazione possono essere riutilizzati per casi d'uso simili. Poiché sono forniti sotto forma di file di intestazione, è sufficiente copiare e modificare ilcodice per creare i propri gestori di configurazione, ad esempio per i trigger hardware.
Classi di utilità
CPylonImage
Gestisci automaticamente i buffer (dimensione, durata)
Utilizzare buffer propri o esterni
Salvare o caricare i formati di immagine più diffusi (BMP, TIFF, JPG, PNG, RAW)
Modifica facilmente immagini 2D e aree di interesse (ad esempio, miniature dei difetti)
Persistenza delle caratteristiche
Salva l'intera configurazione della telecamera e caricala facilmente su altre telecamere
CVideoWriter
Registra video MPEG-4 con un codice sorgente ridotto al minimo
Salvare le immagini acquisite (sequenze di immagini) in un file video
In questo video presentiamo tre classi di utilità. Per informazioni sulle altre classi, consultare gli esempi dell'SDK (accessibili dal menu Aiuto).
Demo: Configurazione di un progetto pylon in Visual Studio
In questa demo imparerai' come creare da zero un progetto pylon in Visual Studio:
Trovare, aprire e configurare una telecamera (o un'emulazione di telecamera)
Acquisisci, visualizza e salva immagini in soli cinque minuti
La Guida per il programmatore C++ (accessibile dal menu Aiuto) ti guiderà passo dopo passo attraverso il processo.



