Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Industriële technologie

OpenCV – Python, Roodlichtdetectie op PLCnext

Open CV is een van de meest gebruikte Computer Vision-bibliotheken die er zijn. Open CV kan worden gebruikt voor gezichtsherkenning, het volgen van objecten, het scannen van barcodes en belangrijker voor deze blog, detecteren of een lampje aan of uit is. In deze blog help ik je om aan de slag te gaan met Open CV en Python op PLCnext en presenteer ik een klein codevoorbeeld over het voorbewerken van je afbeeldingen voor roodlichtdetectie. Deze blog is een alternatieve manier om Open-CV te gebruiken op een PLCnext-controller zoals uitgelegd in eerdere blogposts.

Vereisten

Vandaag gebruik ik de AXC F 2152-controller, maar het is mogelijk om dezelfde procedure te volgen op de AXC F 1152 en een zeer vergelijkbare procedure op de AXC F 3152 en RFC 4072s. De enige vereiste voor vandaag is dat Balena-Engine is geïnstalleerd op de controller die u gebruikt. De stappen voor een succesvolle installatie van Balena-Engine zijn te vinden op de PLCnext Github pagina. Het wordt aangeraden om een ​​SD-kaart van 8 GB te gebruiken. We gebruiken een SSH-verbinding en WinSCP om toegang te krijgen tot de controller. Het gebruik van deze tools valt buiten het bestek van deze blogpost. U vindt een goede handleiding over hoe u ze kunt gebruiken op dit forum of met een snelle Google-zoekopdracht.

Download de OpenCV-Python-afbeelding

Start een SSH-sessie naar de controller en log opnieuw in als rootgebruiker na de installatie van balena-engine.
Voer de volgende opdracht uit en pak een kop koffie, het duurt even voordat de afbeelding op de controller is gedownload.

balena-engine pull pxcbe/opencv-python

Bevestig de installatie

In deze stap valideren we de afbeelding en zorgen we ervoor dat de Open-CV-versie in de afbeelding wordt geïnstalleerd. Voer de volgende opdracht uit.
Als alles goed gaat, drukt de container de Open-CV-versie af en verwijdert de container zichzelf.
Op het moment van schrijven is de geïnstalleerde versie:4.1.0

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


Stel de werkmap in

Open WinSCP en maak een map opencv aan in de directory /opt/plcnext. Je pad zou dus /opt/plcnext/opencv moeten zijn.
Download de inhoud van deze repositry en kopieer en plak ze in de map die we zojuist hebben gemaakt.

U kunt de .jpg wijzigen met uw eigen afbeelding en de app.py aanpassen aan uw behoeften.

Test het script

Nu zullen we het script testen dat je hebt gedownload van de GitHub-pagina en de container interactief uitvoeren. Voer het volgende commando uit als root:

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

Je zit nu in een shell-sessie in de container, roep de opencv_app directory aan met

cd opencv_app

En start het script met:

python app.py

Je zou wat output in de shell moeten zien en 3 nieuwe afbeeldingen in de map /opt/plcnext/opencv. Mogelijk moet u eerst uw winSCP-map vernieuwen om ze te kunnen zien!

Dus wat hebben we gedaan?

Voordat we kunnen gaan uitzoeken of ons licht aan of uit is, moeten we wat voorbewerking doen op de eerste afbeelding, in dit geval "open_cv.jpg". Het eerste dat u normaal gesproken zult doen, is de afbeelding opnieuw schalen om wat rekenkracht te behouden. Dit wordt gedaan op rij 12 (van de app.py) bestand met de cv2.resize opdracht. De uitvoer ziet er hetzelfde uit als het origineel, maar is slechts 50% van de oorspronkelijke afbeelding.

De volgende stap is om de afbeelding grijs te schalen. We grijsschalen de afbeelding met de functie op rij 17, het resultaat is te zien op de onderstaande afbeelding.

De laatste stap in onze innemende pijplijn is om de afbeelding te drempelen, elke pixel onder een bepaalde waarde zal zwart zijn, alles boven dezelfde waarde zal wit zijn. Er zijn een aantal verschillende manieren om een ​​afbeelding te drempelen, sommige zullen een veel beter resultaat geven. Maar voor vandaag regel 21 cv2.threshold volstaat. Het resultaat is te zien op de volgende afbeelding. We hebben nu een kleine afbeeldingsgrootte met alleen zwarte en witte pixels. Een eenvoudige methode om te detecteren of een licht van een stationaire camera aan is, is door een Region Of Intrest (ROI) te definiëren en naar witte pixels te scannen. Meer gecompliceerde algoritmen zullen u echter een beter resultaat geven. Ik heb een aantal andere blogs gelinkt die dit onderwerp behandelen onder verdere lezingen.

Verdere metingen

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

Accepteer a.u.b. marketingcookies om deze video te bekijken.

Accepteer a.u.b. marketingcookies om deze video te bekijken.

Nog een beetje onzeker over containers?
Misschien vind je deze blogs interessant:

https://www.plcnext-community.net/en/hn-makers-blog/481-node-red-and-aan de slag-met-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

Disclaimer

Dit is één manier om met open-cv op de PLCnext Controller te werken. In deze blog leer je hoe je open-cv c++ cross compileert voor een PLCnext target.
Hoewel het misschien omslachtiger lijkt, heeft het zeker zijn waarde voor productiesystemen. Zorg ervoor dat u uw due diligence doet voordat u beslist wat de beste manier is voor uw project.

De afbeelding krijgt geen regelmatige updates. Als u geïnteresseerd bent om dit project uit te breiden of te behouden, neem dan contact op met [email protected]

Ik heb bewust weggelaten hoe je de container voor onbepaalde tijd zou kunnen gebruiken, omdat dit veel zou verschillen met je applicatie.
Zoek zelf een geschikte manier of bespreek dit met mensen die bij uw project betrokken zijn.

Tegoeden

Het werk voor de container is sterk gebaseerd op het werk van mohaseeb


Industriële technologie

  1. Python-operators
  2. Realtime gezichtsherkenning:een end-to-end project
  3. Automatisch volgen van zichtobjecten
  4. Het combineren van elektronische, fotonische chips maakt supersnelle detectie van kwantumlicht mogelijk
  5. LED-accessoires –LED-lichtstripaccessoires
  6. 24 Unit 7:Mastercam
  7. Een eenvoudige op REST gebaseerde bibliotheek om variabelen te gebruiken in PLCnext AXC F 2152 PLC van Python
  8. PLCnext Tableau-dashboard
  9. PLCnext Power BI-rapporten
  10. PLCnext Grafana Dashboards
  11. Java-toepassing op PLCnext Control