Förstå Scorpion Camera Interface (SCI) med Exempel

Introduktion till Scorpion Camera Interface (SCI)

Scorpion Camera Interface (SCI) används för att skriva anpassade drivrutiner till kameror, vilket möjliggör integration av olika kameramodeller med Scorpions bildbehandlingsplattform. SCI:s API förväntar att flera specificerade anrop ska implementeras av varje kamera-drivrutin för att kommunikationen med Scorpion ska fungera sömlöst.

Kamera-konfigurationspersistens

Varje kamera behöver hantera sin konfiguration i textfiler, helst som INI- eller XML-filer. Dessa konfigurationsfiler bör placeras i den katalog som anges i initialize– eller setSystemPath-funktionerna. När kameran är öppnad lyckat ska konfigurationen läsas i funktionen openCVLPort, och när kameran är konfigurerad korrekt ska den skrivs i configureCamera-funktionen.

I äldre versioner av SCI lagrades konfigurationen med kamerans namn som identifierare. I senare versioner rekommenderas det dock att lagra konfigurationen med grabberno och portno som identifierare, i INI-filer som vanligtvis har formatet [Port.<grabberno>.<portno>].

Ett exempel på en typisk INI-fil för kamerakonfiguration kan se ut så här:


[Port.0.0]
$Camera=Basler acA1300-60gc (21536429)
PixelFormat=BayerRG
ProcessedRawEnable=0
ReverseX=0
TestImageSelector=Off
Width=1280
Height=1024

Användning av Standarddeklarationer

SCI använder sig av vissa standarddeklarationer för att hantera kameradata och anrop. Här är några exempel:


typedef struct _WH {
    int w;
    int h;
} WH;

typedef void CallbackFunc(unsigned int grabberNo, unsigned int portNo);
typedef void CmdCallbackFunc(unsigned int grabberNo, const char* cmd, const char* params);
typedef void DebugMsgFunc(const char* msg);

Dessa deklarationer används för att definiera datatyper och funktionssignaturer som krävs av drivrutinerna.

Viktiga API-anrop

Nedan är några exempel på viktiga API-anrop och deras användning:

  • initialize(): Initialiserar kameradrivrutinen och ställer in kommunikationskanaler med Scorpion.
  • finalize(): Avslutar och frigör resurser som används av kameradrivrutinen.
  • setSystemPath(): Anger systemvägen för konfigurationsfiler.
  • configureCamera(): Möjliggör konfigurering av kameran via Scorpions användargränssnitt.
  • openCVLPort(): Öppnar anslutningen till den specificerade kameran och returnerar bildstorleken.
  • doCVLGrab(): Utför en bildtagning från den angivna kameran.

Kommunikation med Scorpion

Kameradrivrutinen ska kunna kommunicera med Scorpion genom att skicka meddelanden och fånga upp händelser som utförs av kameran. Callback-funktioner är essentiella för detta syfte:

  • setCompleteCallback(): Sätter en callback-funktion för att notifiera när en bild har tagits helt.
  • getProperty()/setProperty(): Hämtar och sätter kameraegendomar som pixelstorlek och andra inställningar.

Med dessa API-anrop och mönster i åtanke kan kameratillverkare och utvecklare skapa anpassade drivrutiner som gör kamerorna kompatibla med Scorpions mjukvara. Eftersom kameradrivrutinerna är anpassningsbara kan de skräddarsys för att möta de specifika kraven hos olika kameror och tillämpningar.

För ytterligare information och teknisk support, kan tillverkarna tillhandahålla detaljerade guider eller referera till VC++ Visual Studio 2005 cameradriver SampleGrab-projektet som kan laddas ner för att anpassa egna kameror till Scorpions stödda kameror.

Ta gärna kontakt med den tekniska supporten för Scorpion eller kamerautvecklare för djupare instruktioner och hjälp med att integrera kameror i SCI.

More from our blog