Zugriff auf Kameradaten über ZeroMQ

Vision Connector Benutzerhandbuch

Portfolio
Industrial AI
Product
Vision Connector
Software version
1.2.0
Language
de-DE (translated by machine)

Vorgehensweise

Jede Kamera kann über eine ZeroMQ-Verbindung mit mehrteiligen ZeroMQ-Nachrichten gestreamt werden. Die Rate, mit der diese Nachrichten vom ZeroMQ-Server veröffentlicht werden, hängt vom Gesamtdurchsatz aller Kameras ab. Vision Connector versucht, die Bildrate der Quelle zu übernehmen.

Jede Nachricht besteht aus den folgenden Teilen:

Abschnitt "Nachricht"

Description

Geräte-ID

UTF-8-codierte JSON-Zeichenfolge, die die Kamera-ID enthält.

Metadaten

UTF-8-codierte JSON-Zeichenfolge, die die Metadaten enthält.

Bild

Binärdaten des Bildes

Bild 2 ... n

Zusätzliche Bilder bei einer Multistream-Kamera

Note:

Der Aufruf von socket.recv() liest nur einen Teil einer mehrteiligen Nachricht.

Verwenden Sie stattdessen socket.recv_multipart().

Metadaten

Feld

Type

Wahlfrei

Defaulteinstellung

Description

version

String

Nr.

1

Version des Metadatenformats

zählen

Integer

Nr.

1

Anzahl der Bilder in der Nachricht

Zeitstempel

String

Nr.

-

Zeichenfolge für Datum und Uhrzeit (UTF-8, ISO 8601)

Datum und Uhrzeit des Anwendungshosts

benutzerdefinierte Felder

String

Ja

-

Benutzerdefiniertes Feld, das vom Ersteller der Anwendung definiert und von den Verbrauchern verarbeitet wird. Kann eine einfache Zeichenfolge, eine JSON-Zeichenfolge oder etwas anderes sein.

Detail

Bilddetail-Objekt-Array

Nr.

-

Details zu den Bildern

Bild-Detail-Objekt

Feld

Type

Wahlfrei

Defaulteinstellung

Description

id

String

Nr.

-

Eindeutige Bildkennung.

Vorgeschlagenes mnemonisches Format

z.B. {camid}{camstream}{datetime}

Seq

Integer

Nr.

-

Fortlaufende Nummer für das Kamerabild

Beginnt bei 1 und wird mit jedem aufgenommenen Bild um 1 erhöht.

Höhe

Integer

Nein/Ja

(kodierte Formate)

-

Bildhöhe

Breite

Integer

Nein/Ja

(kodierte Formate)

-

Breite des Bildes

formatns

String

Ja

Genicam

Namensraum des Bildformats

Verwenden Sie Genicam für das Genicam-Pixelformat und Compressed2 für komprimierte Formate.

Format

String

Nr.

-

Bildformat 1 2 3

Zeilen-Padding

integer

Ja

0

Die Anzahl der Bytes, die am Ende des Bytestroms hinzugefügt werden, um ein Vielfaches von 4 Byte zu bilden. Ein Bild mit 61 Pixeln, mono8, hat z. B. einen Zeilenabstand von 3, um den Stream auf 64 Byte aufzufüllen.

Zeitstempel

Saite4

Ja

-

Die Uhr tickt, die von der Kamera übertragen wird.5

Metadaten6

String

Ja

-

Zusätzliches Feld für Bildmetadaten, die vom Ersteller der App definiert und von den Konsumenten verarbeitet werden. Kann eine einfache Zeichenfolge, eine JSON-Zeichenfolge oder etwas anderes sein.

1 Für Kameras, die ein standardisiertes GenICam-Pixelformat verwenden, wird empfohlen, die GenICam-Namenskonvention zu verwenden, wie in Abschnitt 4.35 des GenICam_PFNC_2_4.pdf Dokuments beschrieben.

2 Zusätzliche Werte können unterstützt werden, wenn sie in der Anwendungsdokumentation beschrieben sind.

3 Komprimierte Formate müssen in der Anwendungsdokumentation erwähnt werden, zusammen mit der Empfehlung, sie in Feldern anzugeben, die der Dateiendung entsprechen (z.B. "png", "jpg", "bmp").

4 Es muss ein String verwendet werden, da der PTP-Standard davon ausgeht, dass die Tick-Anzahl eine 80-Bit-Zahl ist. Das aktuelle GenICam-Protokoll gibt jedoch eine 64-Bit-Ganzzahl zurück. Eine Zeichenfolge ist für zukünftige Implementierungen zuverlässiger.

5 Bei den von den Kameras gelieferten Zeitstempeln handelt es sich um Uhrticks. Dies kann sich auf die Unix-Epoche, die Anzahl der Ticks seit dem Einschalten der Kamera, die Anzahl der informierten Ticks oder die Synchronisation mit dem PTP-Server beziehen.

6 Aktivierte Kameras, die PTP unterstützen, müssen den PTP-Synchronisationsstatus in den Metadaten angeben, z.

…

"metadata": "{'ptpstatus': 'gesperrt'}"...

Beispiel für Metadaten einer simulierten Kamera

       { "Anzahl": 1, "Detail": [ { "Format": "Mono8", "Höhe": 1040, "Breite": 1024 "ID": "Emulation (0815-0000)_1_2024-02-02T15:43:13.099Z", "seq": 272, "Zeitstempel": "2024-02-02T15:43:13.099Z", } ], "Zeitstempel": "2024-02-02T15:43:13.099Z", "Version": "1"

}