Anleitung: Ein Teil in einem Kamerabild finden
Von Anfang bis Ende: ein Teil von einer Live-Kamera einlernen, es finden und die Einstellungen so sichern, dass sie einen Neustart überstehen.
Bevor Sie beginnen
-
LumiScan Cam Driver ist auf demselben Gerät installiert und veröffentlicht ein Bild, zum Beispiel unter
hdvisionsystems/lumiscan-cam-driver/camera1/output/image. -
LumiScan Object Finder ist installiert - auf ctrlX OS auch lizenziert -, und
system/moduleslistetmodule-1. -
Das Teil liegt vor der Kamera, in der Beleuchtung, die die Installation tatsächlich verwenden wird.
Schritt 1: Die erste Ansicht einlernen
Sehen Sie sich das Live-Bild an und notieren Sie das Pixelrechteck, das das Teil einnimmt - auf ctrlX OS zeigt
die ctrlX-Weboberfläche das Bild - oder lesen Sie width und height vom Bildknoten.
Setzen Sie die Eingaben und führen Sie aus:
system/create-object/input/input-image-address = hdvisionsystems/lumiscan-cam-driver/camera1/output/image system/create-object/input/object-id = screw-m6 system/create-object/input/crop/startX = 820 system/create-object/input/crop/startY = 400 system/create-object/input/crop/width = 160 system/create-object/input/crop/height = 120 write system/create-object/execute
Prüfen Sie, ob system/create-object/output/status-code 1 ist und output/object-path die Datei nennt.
system/objects sollte jetzt screw-m6 enthalten.
Schneiden Sie eng aus. Hintergrund innerhalb der Vorlage ist Hintergrund, den der Detektor zu sehen erwartet.
Schritt 2: Die anderen Orientierungen einlernen
Der Detektor dreht ein Bild nicht. Jede Orientierung, in der das Teil ankommt, braucht daher ein eigenes
Objekt. Wiederholen Sie Schritt 1 mit einer anderen object-id - etwa screw-m6-tilted - und suchen Sie in
einem eigenen Durchlauf danach.
Kommt das Teil immer nur in einer Lage an, genügt ein Objekt.
Schritt 3: Das Teil finden
module-1/find-object/input/input-image-address = hdvisionsystems/lumiscan-cam-driver/camera1/output/image module-1/find-object/input/object-id = screw-m6 module-1/find-object/input/nms-min-dist = 40 write module-1/find-object/execute
Lesen Sie module-1/find-object/output/status-code. 1 bedeutet, dass der Durchlauf abgeschlossen wurde;
lesen Sie dann output/result.
nms-min-dist bei etwa der halben Größe des Teils in Pixeln verhindert, dass ein Teil als Häufung von Treffern
gemeldet wird.
Schritt 4: Den Schwellwert anhand echter Teile setzen
Führen Sie Schritt 3 mehrmals mit echten Teilen aus und notieren Sie den score der echten Treffer. Setzen Sie
dann
module-1/find-object/input/confidence-threshold = <a little below the worst genuine score>
Liegen die echten Scores nahe am Schwellwert, schalten Sie die Glättung ein - setzen Sie
module-1/find-object/input/preprocess/blur-sigma-x auf 1.0 - und messen Sie erneut. Siehe
Die Suche abstimmen.
Schritt 5: Dauerhaft machen
Einstellungen wirken sofort, werden aber erst gespeichert, wenn Sie es verlangen:
system/save-module-inputs/input/module-id = module-1 write system/save-module-inputs/execute write system/save-current-modules/execute
Beide sollten Status 1 melden. Das Modul und seine Einstellungen kommen jetzt nach einem Neustart zurück.
Schritt 6: Aus einem Steuerungsprogramm ausführen
Pro Zyklus:
-
Schreiben Sie auf
module-1/find-object/execute. -
Lesen Sie
module-1/find-object/output/status-code. -
Ist er negativ, ist der Durchlauf fehlgeschlagen - lesen Sie
output/status-textfür den Grund und verwenden Sie das Ergebnis nicht. -
Ist er
1, lesen Sieoutput/result. Eine leerematches-Liste bedeutet, dass das Teil nicht da war.
Lesen Sie die Ausgaben, bevor Sie das nächste execute auslösen: Ein Durchlauf leert sie beim Start.
Wie jedes Bild der Kamera ohne einen Aufruf pro Bild durchsucht wird, lesen Sie in Objekte auf einem Bild-Stream finden (experimentell).
Wenn das Teil nicht gefunden wird
Probleme sind Schritt für Schritt unter Fehlerbehebung beschrieben:
-
Das Ergebnis ist leer, obwohl der Statuscode
1ist - Scores knapp unter dem Schwellwert, ein Teil, das nur in manchen Orientierungen oder Arbeitsabständen gefunden wird, oder nie gefunden wird -
Statuscodes und Fehlermeldungen - wenn
status-codenegativ ist