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

Détecter des feux rouges sur PLCnext avec OpenCV et Python

OpenCV est l'une des bibliothèques de vision par ordinateur les plus utilisées. Elle sert pour la reconnaissance faciale, le suivi d'objets, la lecture de codes-barres et, pour ce blog, détecter si un feu est allumé ou éteint. Ce blog vous aide à démarrer avec OpenCV et Python sur PLCnext et présente un exemple de prétraitement d'images pour la détection de feu rouge. C'est une alternative à l'utilisation d'OpenCV sur PLCnext expliquée dans d'autres billets.

Prérequis

Aujourd'hui j'utilise le contrôleur AXC F 2152, mais la même procédure fonctionne sur AXC F 1152 et une procédure très similaire sur AXC F 3152 et RFC 4072s. Le seul prérequis : avoir Balena-Engine installé sur le contrôleur. Les étapes d'installation sont sur la page GitHub PLCnext. Une carte SD 8 Go est recommandée. Nous utiliserons une connexion SSH et WinSCP pour accéder au contrôleur. L'utilisation de ces outils est hors sujet, vous trouverez des guides sur le forum ou via recherche.

Télécharger l'image OpenCV-Python

Démarrez une session SSH sur le contrôleur et connectez-vous en root après l'installation de balena-engine.
Exécutez la commande suivante et prenez un café, le téléchargement prend du temps :

balena-engine pull pxcbe/opencv-python

Valider l'installation

Valider l'image et obtenir la version OpenCV installée. Exécutez :

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

Si tout va bien, le conteneur affiche la version OpenCV et s'auto-supprime. Au moment de l'écriture, version installée : 4.1.0

Configurer le répertoire de travail

Ouvrez WinSCP et créez un dossier opencv dans /opt/plcnext. Chemin : /opt/plcnext/opencv.
Téléchargez le contenu de ce dépôt et copiez-le dans ce répertoire.

Vous pouvez remplacer le .jpg par votre propre image et modifier app.py selon vos besoins.

Tester le script

Testez le script téléchargé et lancez le conteneur interactivement. En root :

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

Vous êtes dans une session shell dans le conteneur, allez dans opencv_app :

cd opencv_app

Lancez le script :

python app.py

Vous devriez voir de la sortie dans le shell et 3 nouvelles images dans /opt/plcnext/opencv. Rafraîchissez WinSCP si nécessaire !

Qu'avons-nous fait ?

Avant de détecter si un feu est allumé, il faut prétraiter l'image initiale (« open_cv.jpg »). Première étape : redimensionner pour économiser de la puissance de calcul. Fait ligne 12 (app.py) avec cv2.resize. Résultat identique à l'original mais 50% de la taille.

Détecter des feux rouges sur PLCnext avec OpenCV et Python

Deuxième étape : passer en niveaux de gris. Fonction ligne 17, résultat :

Détecter des feux rouges sur PLCnext avec OpenCV et Python

Dernière étape du prétraitement : seuillage. Tout pixel sous une certaine valeur devient noir, au-dessus devient blanc. Différentes méthodes de seuillage existent, certaines donnent de meilleurs résultats. Pour aujourd'hui, ligne 21 cv2.threshold suffit. Résultat :

Détecter des feux rouges sur PLCnext avec OpenCV et Python

Nous avons maintenant une petite image en noir et blanc. Une méthode simple pour détecter un feu allumé depuis une caméra fixe : définir une région d'intérêt (ROI) et scanner les pixels blancs. Des algorithmes plus complexes donnent de meilleurs résultats. Voir lectures complémentaires.

Lectures complémentaires

Acceptez les cookies marketing pour visionner les vidéos.

Pas encore à l'aise avec les conteneurs ?
Ces blogs peuvent aider :

Avertissement

C'est une façon de travailler avec OpenCV sur PLCnext. Dans ce blog, vous apprendrez à cross-compiler OpenCV C++ pour cible PLCnext. Bien que plus fastidieux, cela a sa valeur pour les systèmes de production. Faites votre devoir avant de choisir la meilleure approche pour votre projet.

L'image ne recevra pas de mises à jour régulières. Si vous voulez l'étendre ou la maintenir, contactez axsupport@phoenixcontact.be.

J'ai volontairement omis comment faire tourner le conteneur indéfiniment car cela dépend beaucoup de votre application. Trouvez une méthode adaptée ou discutez avec les parties prenantes.

Crédits

Le travail sur le conteneur est fortement basé sur celui de mohaseeb.

Technologie industrielle

  1. Maîtriser les opérateurs Python : Guide complet
  2. Reconnaissance faciale en temps réel sur Raspberry Pi – Guide complet
  3. Suivi d'objets automatisé par vision avec Raspberry Pi et OpenCV
  4. Nouveau détecteur bi-puce atteint une mesure ultra-rapide de la lumière quantique
  5. Maîtriser les accessoires pour bandeaux LED : connecter, contrôler, personnaliser
  6. Mastercam Unité 7 : Gestion d'images et création de parcours d'outils
  7. Surveillance temps réel PLCnext avec tableaux de bord Tableau
  8. Créer des tableaux de bord Power BI à partir des données cloud PLCnext
  9. Créer des tableaux de bord Grafana temps réel pour PLCnext Control dans Azure IoT Hub