Data-Layer-Referenz
Jede Adresse unten ist relativ zu
hdvisionsystems/lumiscan-object-finder/
Data Layer
LumiScan Object Finder bietet seine Funktionen auf dem Data Layer unter hdvisionsystems/lumiscan-object-finder an.
Auf ctrlX OS (ctrlX CORE oder ctrlX IPC) nutzt LumiScan Object Finder den ctrlX Data Layer.
Auf einem PC mit Windows 11 oder Ubuntu 24.04 nutzt LumiScan Object Finder LumiScan Keryx.
Knotenadressen, Typen und Aufrufmuster sind auf beiden gleich. LumiScan Object Finder bietet:
-
ein Stream-Abonnement auf eine Quelle (experimentell)
Wie Adressen aufgebaut sind, wie Funktionen aufgerufen werden, die Statuscodes und die Werkzeuge sind in LumiScan Keryx beschrieben.
Anwendungsweite Knoten
| Adresse | Typ | Zugriff | Beschreibung |
|---|---|---|---|
|
string[] |
lesen |
Die derzeit vorhandenen Module |
|
string |
lesen |
Verzeichnis, aus dem die Objektbilder gelesen werden, relativ zum Konfigurationsverzeichnis |
|
string[] |
lesen |
Objekte, nach denen gesucht werden kann, eines pro |
|
Methode |
schreiben |
Zu einem anderen Objektverzeichnis wechseln |
|
string |
lesen/schreiben |
Verzeichnis, zu dem gewechselt wird |
|
Methode |
schreiben |
Einen Ausschnitt eines Live-Bildes als Objekt speichern |
|
string |
lesen/schreiben |
Bild, aus dem ausgeschnitten wird |
|
string |
lesen/schreiben |
Name des Objekts; zugleich der Dateiname. Überschreibt ein bestehendes |
|
int32 |
lesen/schreiben |
Linker Rand der auszuschneidenden Region |
|
int32 |
lesen/schreiben |
Oberer Rand |
|
int32 |
lesen/schreiben |
Breite, muss > 0 sein |
|
int32 |
lesen/schreiben |
Höhe, muss > 0 sein |
|
string |
lesen |
Vom letzten Durchlauf geschriebene Datei |
|
Methode |
schreiben |
Ein Modul hinzufügen |
|
string |
lesen/schreiben |
Name für das neue Modul |
|
Methode |
schreiben |
Ein Modul entfernen |
|
string |
lesen/schreiben |
Zu entfernendes Modul |
|
Methode |
schreiben |
Die Modulliste dauerhaft speichern |
|
Methode |
schreiben |
Die Einstellungen eines Moduls dauerhaft speichern |
|
string |
lesen/schreiben |
Zu speicherndes Modul |
|
string |
lesen |
Was der Knoten enthalten muss, den ein Modul abonniert, als JSON Schema (draft-04) seiner JSON-Form: hier ein |
Jede Methode bedient außerdem output/status-code und output/status-text. Auf ctrlX OS deckt eine Lizenz
zehn Module ab, siehe Modulverwaltung.
Knoten pro Modul
Alle Adressen unten liegen unter <module-id>/find-object/.
| Adresse | Typ | Zugriff | Standard | Beschreibung |
|---|---|---|---|---|
|
Methode |
schreiben |
- |
Eine Erkennung ausführen |
|
string |
lesen/schreiben |
(leer) |
Adresse des zu durchsuchenden Bildknotens |
|
string |
lesen/schreiben |
(leer) |
Gesuchtes Objekt. Erforderlich - ein leerer Wert wird abgelehnt |
|
float64 |
lesen/schreiben |
0.6 |
Kleinster akzeptierter Score, 0 bis 1 |
|
float64 |
lesen/schreiben |
0.0 |
Mindestabstand in Pixeln zwischen zwei Treffern |
|
uint8[] |
lesen/schreiben |
[1,2] |
Ebenen der Bildpyramide, auf denen gesucht wird. Keine Geschwindigkeitseinstellung |
|
string |
lesen/schreiben |
IMAGE |
|
|
uint16 |
lesen/schreiben |
0 |
Linker Rand der zu durchsuchenden Region |
|
uint16 |
lesen/schreiben |
0 |
Oberer Rand |
|
uint16 |
lesen/schreiben |
0 |
Breite; 0 reicht bis zum rechten Rand |
|
uint16 |
lesen/schreiben |
0 |
Höhe; 0 reicht bis zum unteren Rand |
|
int32 |
lesen/schreiben |
1 |
Suche mit 1/N der Auflösung: schneller, weniger präzise. 1 deaktiviert es |
|
float64 |
lesen/schreiben |
0.0 |
Gauß-Glättung in X; 0 oder weniger deaktiviert sie |
|
float64 |
lesen/schreiben |
0.0 |
Gauß-Glättung in Y; 0 bedeutet wie X |
|
uint32 |
lesen/schreiben |
0 |
Glättungskernel in X; 0 berechnet ihn, sonst ungerade |
|
uint32 |
lesen/schreiben |
0 |
Glättungskernel in Y; 0 berechnet ihn, sonst ungerade |
|
flatbuffers |
lesen |
leer |
Treffer des letzten Durchlaufs |
|
int16 |
lesen |
0 |
Ausgang als Zahl |
|
string |
lesen |
(leer) |
Ausgang in Worten |
Bild-Stream-Knoten pro Modul (experimentell)
Alle Adressen unten liegen unter <module-id>/, neben find-object/. Der Stream durchsucht jedes Bild mit den
Eingaben von find-object, alle außer input/input-image-address. Siehe
Objekte auf einem Bild-Stream finden.
| Adresse | Typ | Zugriff | Standard | Beschreibung |
|---|---|---|---|---|
|
bool |
lesen/schreiben |
wie angewendet |
Stream-Modus: |
|
string |
lesen/schreiben |
wie angewendet |
Die eine Quelle, der Stream-Ordner einer Kamera, z. B. |
|
string |
lesen/schreiben |
wie angewendet |
Das Tag auf den Ergebnissen des Moduls: Der Schritt des Moduls in der Lineage jedes Stream-Ergebnisses trägt es. Leer: die Modul-ID, z. B. |
|
uint32 |
lesen/schreiben |
wie angewendet |
Bilder, die warten dürfen, während eines durchsucht wird, 1-64 |
|
bool |
lesen/schreiben |
wie angewendet |
|
|
Methode |
schreiben |
- |
Prüft die Eingaben von |
|
Methode |
schreiben |
- |
Entfernt die Quelle, die |
|
string |
lesen/schreiben |
(leer) |
Die zu entfernende Quelle, wie |
|
wie die Eingaben |
lesen |
|
Was |
|
string |
lesen |
- |
Hash dessen, womit die Ergebnisse erzeugt werden, 16 Hexadezimalziffern |
|
bool |
lesen |
false |
|
|
flatbuffers |
lesen |
leer |
Ein |
|
string |
lesen |
(leer) |
Warum das letzte Bild, das nicht durchsucht werden konnte, fehlgeschlagen ist, mit der Quelle anhand ihrer Adresse |
|
uint64 |
lesen |
0 |
Millisekunden seit dem Start des Streams |
|
uint64 |
lesen |
0 |
Bilder, die das Abonnement geliefert hat |
|
uint64 |
lesen |
0 |
Durchsuchte Bilder, jedes mit einem Ergebnis |
|
uint64 |
lesen |
0 |
Bilder, die aus der Warteschlange verdrängt wurden oder warteten, als die Quelle ersetzt oder entfernt wurde |
|
uint64 |
lesen |
0 |
Bilder, die nicht durchsucht werden konnten |
|
uint64 |
lesen |
0 |
Bilder, die verloren gingen, bevor sie ankamen |
|
uint64 |
lesen |
0 |
Suchzeit aller durchsuchten Bilder, summiert, Mikrosekunden |
Die Eingaben von control/subscribe beginnen mit dem, was angewendet ist, und nur control/subscribe/execute
wendet sie an. control/subscribe/execute wird für den Stream-Modus ohne Adresse oder mit einer
Warteschlangengröße außerhalb von 1-64 abgelehnt, control/unsubscribe/execute für eine Adresse, die nicht die
Quelle ist (Rejected, ctrlX: DL_INVALID_VALUE). Kann <module-id>.json nicht geschrieben werden, antworten
beide mit CreationFailed (ctrlX: DL_CREATION_FAILED) und ändern nichts. Die Stream-Knoten sind in jedem
Konsumenten gleich, siehe Streams.
Der Ergebnis-Flatbuffer
output/result enthält hdv.object_find.Result:
| Feld | Typ | Bedeutung |
|---|---|---|
|
Match[] |
Alle Treffer, nach Score absteigend sortiert |
|
int |
Linke obere Ecke der gefundenen Vorlage, in Pixeln |
|
int |
Größe der Vorlage, die übereingestimmt hat |
|
float |
Ähnlichkeit von 0.0 bis 1.0 |
|
string |
Das gefundene Objekt; bei jedem Treffer eines Durchlaufs dasselbe |
|
ulong |
Index des besten Treffers; 0, wenn es keinen gibt |
|
float |
Score des besten Treffers; 0.0, wenn es keinen gibt |
|
string |
Objekt des besten Treffers; leer, wenn es keinen gibt |
|
uint |
Der Bildausschnitt, in dem die Koordinaten liegen |
|
float |
Der angewendete Schwellwert |
|
ulong |
Mikrosekunden seit Epoche, beim Abschluss des Durchlaufs |
control/subscribe/output/stream/result enthält hdv.stream.StreamObjectMatches
(stream_object_matches, registriert als
types/hdvisionsystems/lumiscan-object-finder/stream_object_matches): lineage, woher das Bild kam, und
result, das hdv.object_find.Result von oben.
Konfigurationsdatei
Die Anwendungs-Einstellungsdatei lumiscan-object-finder.json liegt im Konfigurationsverzeichnis:
| Plattform | Datei |
|---|---|
ctrlX OS |
|
PC (Windows) |
|
{
"system": { "logLevel": "INFO" },
"object-dir": "templates",
"modules": [ { "id": "module-1", "advanced": false } ]
}
logLevel akzeptiert TRACE, DEBUG, INFO, WARN, ERROR, FATAL und OFF und wird beim Start
gelesen. Die gespeicherten Einstellungen jedes Moduls liegen daneben in <module-id>.json, ebenso Modus,
Quelle, Warteschlangengröße und keep-latest-output seines Bild-Streams, unter stream.
Mit einem Beispiel beginnen (PC)
Auf einem PC schreibt der Object Finder ein Beispiel seiner Einstellungen in einen Ordner Ihrer Wahl und beendet sich, ohne zu starten. Zum Beispiel unter Windows:
lumiscan-obj-find --generate-settings C:\work\object-finder-settings
Ohne Ordner (-g allein) schreibt er in den aktuellen Ordner. Das Beispiel ist die Anwendungs-Einstellungsdatei
lumiscan-object-finder.json, die das Modul module-1 nennt, und daneben die Moduldatei module-1.json:
jede Eingabe von find-object mit ihrem Standardwert, außer der Bildadresse, die camera1 des Cam Driver ist.
Daneben, in schemas/, liegen die Schemas, die die beiden Dateien in "$schema" nennen:
lumiscan-object-finder.schema.json, lumiscan-object-finder-module.schema.json und stream.schema.json für
den Abschnitt stream einer Moduldatei. Sie beschreiben jeden Schlüssel, den der Object Finder liest - jede
Eingabe von find-object mit Typ, Standardwert und dem Bereich, den ein Durchlauf akzeptiert -, sodass ein
Editor, der JSON Schema versteht, die Dateien prüfen und zeigen kann, was jeder Wert bedeutet. Kopieren Sie den
Ordner schemas zusammen mit den Dateien: system/save-module-inputs behält das "$schema" einer Moduldatei,
die es speichert.
Bestehende Dateien werden nie überschrieben: Liegt eine davon bereits im Ordner, wird nichts geschrieben, und
der Object Finder nennt, welche.
Der Object Finder nennt dann den Ordner, aus dem er seine Einstellungen liest - unter Windows standardmäßig
C:\ProgramData\HD Vision Systems GmbH\LumiScan Vision Suite\lumiscan-obj-find\etc\lumiscan-object-finder.
Bearbeiten Sie das Beispiel, kopieren Sie es dorthin und starten Sie den Object Finder. Siehe auch
Speicherorte der Dateien (Windows).