Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Technologie industrielle

OpenCV – Python, détection Red Light sur PLCnext

Open CV est l'une des bibliothèques de vision par ordinateur les plus utilisées. Open CV peut être utilisé pour la reconnaissance faciale, le suivi d'objets, la numérisation de codes-barres et, plus important pour ce blog, pour détecter si une lumière est allumée ou éteinte. Dans ce blog, je vais vous aider à démarrer avec Open CV et Python sur PLCnext et présenter un petit exemple de code sur la façon de prétraiter vos images pour la détection de la lumière rouge. Ce blog est une autre façon d'utiliser Open-CV sur un contrôleur PLCnext expliqué dans les articles de blog précédents.

Prérequis

Aujourd'hui, j'utilise le contrôleur AXC F 2152 mais il est possible de suivre la même procédure sur l'AXC F 1152 et une procédure très similaire sur l'AXC F 3152 et les RFC 4072. La seule condition préalable pour aujourd'hui est d'avoir Balena-Engine installé sur le contrôleur que vous utilisez. Les étapes pour une installation réussie de Balena-Engine se trouvent sur la page PLCnext Github. Il est conseillé d'utiliser une carte SD de 8 Go. Nous utiliserons une connexion SSH et WinSCP pour accéder au contrôleur. L'utilisation de ces outils sort du cadre de cet article de blog. Vous trouverez un bon guide sur la façon de les utiliser dans ce forum ou avec une recherche rapide sur Google.

Télécharger l'image OpenCV-Python

Démarrez une session SSH sur le contrôleur et reconnectez-vous en tant qu'utilisateur root après l'installation de balena-engine.
Exécutez la commande suivante et prenez une tasse de café, cela prendra un certain temps avant que l'image ne soit téléchargée sur le contrôleur.

balena-engine pull pxcbe/opencv-python

Valider l'installation

Dans cette étape, nous validerons l'image et installerons la version Open-CV dans l'image. Exécutez la commande suivante.
Si tout se passe bien, le conteneur imprimera la version Open-CV et le conteneur se supprimera.
Au moment de la rédaction, la version installée est :4.1.0

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


Configurer le répertoire de travail

Ouvrez WinSCP et créez un dossier opencv dans le répertoire /opt/plcnext. Votre chemin devrait donc être /opt/plcnext/opencv.
Téléchargez le contenu de ce référentiel et copiez-le dans le répertoire que nous venons de créer.

Vous pouvez changer le .jpg avec votre propre image et modifier l'app.py pour l'adapter à vos besoins.

Tester le script

Nous allons maintenant tester le script que vous avez téléchargé à partir de la page GitHub et exécuter le conteneur de manière interactive. Exécutez la commande suivante en tant que root :

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

Vous êtes maintenant dans une session shell à l'intérieur du conteneur, appelez le répertoire opencv_app avec

cd opencv_app

Et lancez le script avec :

python app.py

Vous devriez voir une sortie dans le shell et 3 nouvelles images dans le dossier /opt/plcnext/opencv. Vous devrez peut-être d'abord actualiser votre dossier winSCP pour pouvoir les voir !

Alors, qu'avons-nous fait ?

Avant de pouvoir commencer à découvrir si notre lumière est allumée ou éteinte, nous devons faire un prétraitement sur l'image initiale dans ce cas "open_cv.jpg". La première chose que vous ferez généralement est de redimensionner l'image pour conserver une certaine puissance de calcul. Cela se fait sur la ligne 12 (du app.py) fichier avec le cv2.resize commande. La sortie ressemble à l'original mais ne représente que 50 % de l'image initiale.

L'étape suivante consiste à mettre l'image en niveaux de gris. Nous avons mis en niveaux de gris l'image avec la fonction trouvée à la ligne 17, le résultat est visible sur l'image ci-dessous.

La dernière étape de notre pipeline prévenant consiste à seuiller l'image, chaque pixel sous une certaine valeur sera noir, tout ce qui est au-dessus de la même valeur sera blanc. Il existe différentes façons de définir le seuil d'une image, certaines donneront un bien meilleur résultat. Mais pour aujourd'hui ligne 21 cv2.threshold suffira. Le résultat peut être trouvé dans l'image suivante. Nous avons maintenant une petite taille d'image avec uniquement des pixels noirs et blancs. Une méthode simple pour détecter si une lumière est allumée à partir d'une caméra fixe serait de définir une région d'intérêt (ROI) et de rechercher des pixels blancs. Cependant, des algorithmes plus compliqués vous donneront un meilleur résultat. J'ai lié d'autres blogs traitant de ce sujet sous d'autres lectures.

Autres lectures

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

Veuillez accepter les cookies marketing pour regarder cette vidéo.

Veuillez accepter les cookies marketing pour regarder cette vidéo.

Vous hésitez encore un peu sur les conteneurs ?
Ces blogs pourraient vous intéresser :

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

Avis de non-responsabilité

C'est une façon de travailler avec open-cv sur le PLCnext Controller. Dans ce blog, vous apprendrez comment effectuer une compilation croisée open-cv c++ pour une cible PLCnext.
Bien qu'il puisse sembler plus lourd, il a sûrement sa valeur pour les systèmes de production. Assurez-vous de faire preuve de diligence raisonnable avant de décider quelle devrait être la meilleure solution pour votre projet.

L'image ne sera pas mise à jour régulièrement. Si vous souhaitez étendre ou maintenir ce projet, veuillez contacter [email protected]

J'ai délibérément laissé de côté la façon dont vous pourriez exécuter le conteneur indéfiniment car cela différerait beaucoup avec votre application.
Veuillez trouver vous-même un moyen approprié ou en discuter avec les personnes impliquées dans votre projet.

Crédits

Le travail pour le conteneur est fortement basé sur le travail de mohaseeb


Technologie industrielle

  1. Opérateurs Python
  2. Reconnaissance faciale en temps réel :un projet de bout en bout
  3. Suivi automatique des objets de vision
  4. La combinaison de puces électroniques et photoniques permet une détection ultra-rapide de la lumière quantique
  5. Accessoires LED – Accessoires pour bandes lumineuses LED
  6. 24 Unité 7 :Mastercam
  7. Tableau de bord PLCnext
  8. Rapports PLCnext Power BI
  9. Tableaux de bord PLCnext Grafana