Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Industrietechnik

OpenCV – Python, Rotlichterkennung auf PLCnext

Open CV ist eine der am häufigsten verwendeten Computer Vision-Bibliotheken da draußen. Open CV kann zur Gesichtserkennung, Objektverfolgung, zum Scannen von Barcodes und, was für diesen Blog wichtiger ist, zum Erkennen, ob ein Licht ein- oder ausgeschaltet ist, verwendet werden. In diesem Blog helfe ich Ihnen bei den ersten Schritten mit Open CV und Python auf PLCnext und stelle ein kleines Codebeispiel vor, wie Sie Ihre Bilder für die Rotlichterkennung vorverarbeiten können. Dieser Blog ist eine alternative Möglichkeit, Open-CV auf einer PLCnext-Steuerung zu verwenden, die in früheren Blogbeiträgen erläutert wurde.

Voraussetzungen

Heute verwende ich den AXC F 2152 Controller, aber es ist möglich, das gleiche Verfahren auf dem AXC F 1152 und ein sehr ähnliches Verfahren auf dem AXC F 3152 und RFC 4072 zu befolgen. Die einzige Voraussetzung für heute ist, dass Balena-Engine auf dem von Ihnen verwendeten Controller installiert ist. Die Schritte für eine erfolgreiche Installation der Balena-Engine finden Sie auf der PLCnext Github Seite. Es wird empfohlen, eine 8-GB-SD-Karte zu verwenden. Wir verwenden eine SSH-Verbindung und WinSCP, um auf den Controller zuzugreifen. Die Verwendung dieser Tools ist nicht Gegenstand dieses Blogposts. Eine gute Anleitung zur Verwendung finden Sie in diesem Forum oder mit einer schnellen Google-Suche.

Laden Sie das OpenCV-Python-Image herunter

Starten Sie eine SSH-Sitzung zum Controller und melden Sie sich nach der Installation von balena-engine erneut als Root-Benutzer an.
Führen Sie den folgenden Befehl aus und holen Sie sich eine Tasse Kaffee, es wird eine Weile dauern, bis das Bild auf den Controller heruntergeladen wird.

balena-engine pull pxcbe/opencv-python

Validieren Sie die Installation

In diesem Schritt validieren wir das Image und installieren die Open-CV-Version im Image. Führen Sie den nächsten Befehl aus.
Wenn alles gut geht, druckt der Container die Open-CV-Version und der Container entfernt sich selbst.
Zum Zeitpunkt des Schreibens ist die installierte Version:4.1.0

balena-engine run -it --rm \
       pxcbe/opencv-python \
       python -c "import cv2; print(cv2.__version__)"


Richten Sie das Arbeitsverzeichnis ein

Öffnen Sie WinSCP und erstellen Sie im Verzeichnis /opt/plcnext einen Ordner opencv. Ihr Pfad sollte daher /opt/plcnext/opencv lauten.
Laden Sie den Inhalt dieses Repositorys herunter und kopieren Sie ihn in das gerade erstellte Verzeichnis.

Sie können das .jpg mit Ihrem eigenen Bild ersetzen und die app.py an Ihre Bedürfnisse anpassen.

Testen Sie das Skript

Jetzt testen wir das Skript, das Sie von der GitHub-Seite heruntergeladen haben, und führen den Container interaktiv aus. Führen Sie den nächsten Befehl als root aus:

balena-engine run -it --rm -v /opt/plcnext/opencv/:/opencv_app pxcbe/opencv-python /bin/bash

Sie befinden sich nun in einer Shell-Session innerhalb des Containers, rufen Sie das Verzeichnis opencv_app mit

auf

cd opencv_app

Und starten Sie das Skript mit:

python app.py

Sie sollten einige Ausgaben in der Shell und 3 neue Bilder im Ordner /opt/plcnext/opencv sehen. Möglicherweise müssen Sie zuerst Ihren winSCP-Ordner aktualisieren, um sie sehen zu können!

Also, was haben wir getan?

Bevor wir herausfinden können, ob unser Licht an oder aus ist, müssen wir einige Vorverarbeitungen am ursprünglichen Bild durchführen, in diesem Fall „open_cv.jpg“. Das erste, was Sie normalerweise tun werden, ist das Bild neu zu skalieren, um etwas Rechenleistung zu sparen. Dies geschieht in Zeile 12 (der app.py) Datei mit der cv2.resize Befehl. Die Ausgabe sieht genauso aus wie das Original, macht aber nur 50 % des Ausgangsbildes aus.

Der nächste Schritt besteht darin, das Bild in Graustufen zu skalieren. Wir skalieren das Bild mit der Funktion in Zeile 17 in Graustufen, das Ergebnis ist auf dem Bild unten zu sehen.

Der letzte Schritt in unserer Prepossessing-Pipeline besteht darin, das Bild mit einem Schwellenwert zu versehen, jedes Pixel unter einem bestimmten Wert wird schwarz, alles über demselben Wert wird weiß. Es gibt verschiedene Möglichkeiten, ein Bild mit Schwellenwerten zu versehen, einige liefern ein viel besseres Ergebnis. Aber für heute Zeile 21 cv2.threshold wird genügen. Das Ergebnis ist im folgenden Bild zu sehen. Wir haben jetzt eine kleine Bildgröße mit nur schwarzen und weißen Pixeln. Eine einfache Methode zum Erkennen, ob ein Licht von einer stationären Kamera aus eingeschaltet ist, besteht darin, eine Region Of Intrest (ROI) zu definieren und nach weißen Pixeln zu suchen. Kompliziertere Algorithmen liefern Ihnen jedoch ein besseres Ergebnis. Einige andere Blogs, die sich mit diesem Thema beschäftigen, habe ich unter weiterführende Literatur verlinkt.

Weiterführende Literatur

https://docs.opencv.org/master/d7/d4d/tutorial_py_thresholding.htmlhttps://docs.opencv.org/master/dd/d43/tutorial_py_video_display.html

https://medium.com/@kenan.r.alkiek/https-medium-com-kenan-r-alkiek-traffic-light-recognition-505d6ab913b1

Bitte akzeptieren Sie Marketing-Cookies, um dieses Video anzusehen.

Bitte akzeptieren Sie Marketing-Cookies, um dieses Video anzusehen.

Noch etwas unsicher bei Containern?
Diese Blogs könnten für Sie interessant sein:

https://www.plcnext-community.net/en/hn-makers-blog/481-node-red-and-getting-started-with-docker.htmlhttps://www.plcnext-community.net/en/ hn-makers-blog/482-node-red-with-docker-tips-and-best-practice.htmlhttps://www.docker.com/resources/what-container

Haftungsausschluss

Dies ist eine Möglichkeit, mit open-cv auf dem PLCnext Controller zu arbeiten. In diesem Blog erfahren Sie, wie Sie open-cv c++ für ein PLCnext-Ziel übergreifend kompilieren.
Auch wenn es umständlicher erscheinen mag, hat es sicherlich seinen Wert für Produktionssysteme. Stellen Sie sicher, dass Sie Ihre Due Diligence durchführen, bevor Sie entscheiden, was der beste Weg für Ihr Projekt sein sollte.

Das Bild wird nicht regelmäßig aktualisiert. Wenn Sie daran interessiert sind, dieses Projekt zu erweitern oder aufrechtzuerhalten, wenden Sie sich bitte an [email protected]

Ich habe absichtlich ausgelassen, wie Sie den Container auf unbestimmte Zeit ausführen könnten, da dies von Ihrer Anwendung stark abweichen würde.
Bitte finden Sie selbst einen geeigneten Weg oder besprechen Sie dies mit Personen, die an Ihrem Projekt beteiligt sind.

Credits

Die Arbeit für den Container basiert stark auf der Arbeit von mohaseeb


Industrietechnik

  1. Python-Operatoren
  2. Echtzeit-Gesichtserkennung:Ein End-to-End-Projekt
  3. Automatische Bildverfolgung von Objekten
  4. Die Kombination elektronischer, photonischer Chips ermöglicht eine superschnelle Quantenlichtdetektion
  5. LED-Zubehör – Zubehör für LED-Lichtleisten
  6. 24 Lektion 7:Mastercam
  7. PLCnext Tableau-Dashboard
  8. PLCnext Power BI-Berichte
  9. PLCnext Grafana-Dashboards
  10. Java-Anwendung auf PLCnext Control