Tutorial

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

Suggerimento

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:

Esempi dell'SDK C++ relativi ai parametri della telecamera, pensati per ottenere risultati rapidi e per essere riutilizzati nella propria applicazione.
Esempi dell'SDK C++ relativi ai parametri della telecamera, pensati per ottenere risultati rapidi e per essere riutilizzati 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

L'API C++ di pylon è composta da diversi moduli
Struttura dell'API C++ di pylon

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.

Ulteriori informazioni

Come possiamo sostenerti?

Saremo lieti di consigliarti nella scelta dei prodotti più giusti per la tua applicazione.