Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Tecnología Industrial

Detectar luces rojas en PLCnext con OpenCV y Python

OpenCV es una de las bibliotecas de Visión por Computadora más usadas. OpenCV puede usarse para reconocimiento facial, seguimiento de objetos, escaneo de códigos de barras y, lo más importante para este blog, detectar si una luz está encendida o apagada. En este blog le ayudaré a empezar con OpenCV y Python en PLCnext y presentaré una pequeña muestra de código sobre cómo preprocesar sus imágenes para detección de luz roja. Este blog es una forma alternativa de usar OpenCV en un controlador PLCnext explicada en entradas de blog anteriores.

Requisitos previos

Hoy estoy usando el Controlador AXC F 2152 pero es posible seguir el mismo procedimiento en el AXC F 1152 y un procedimiento muy similar en el AXC F 3152 y RFC 4072s. El único requisito previo para hoy es tener Balena-Engine instalado en el controlador que está usando. Los pasos para una instalación exitosa de Balena-Engine se pueden encontrar en la página de PLCnext Github. Se aconseja usar una tarjeta SD de 8GB. Usaremos una conexión SSH y WinSCP para acceder al controlador. El uso de estas herramientas está fuera del alcance de esta entrada de blog. Encontrará una buena guía sobre cómo usarlas en este foro o con una búsqueda rápida en Google.

Descargar la imagen OpenCV-Python

Inicie una sesión SSH al controlador e inicie sesión como usuario root nuevamente después de la instalación de balena-engine. Ejecute el siguiente comando y tome una taza de café, tardará un tiempo antes de que la imagen se descargue en el controlador.

balena-engine pull pxcbe/opencv-python

Validar la instalación

En este paso validaremos la imagen y obtendremos la versión de OpenCV instalada en la imagen. Ejecute el siguiente comando. Si todo va bien, el contenedor imprimirá la versión de OpenCV y el contenedor se eliminará a sí mismo. En el momento de escribir esto, la versión instalada es: 4.1.0

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

Configurar el directorio de trabajo

Abra WinSCP y cree una carpeta opencv en el directorio /opt/plcnext. Su ruta debería ser /opt/plcnext/opencv. Descargue el contenido de este repositorio y cópielos dentro del directorio que acabamos de crear.

Puede cambiar el .jpg con su propia imagen y modificar app.py para adaptarlo a sus necesidades.

Probar el script

Ahora probaremos el script que ha descargado de la página de GitHub y ejecutaremos el contenedor interactivamente. Ejecute el siguiente comando como root:

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

Ahora está en una sesión de shell dentro del contenedor, vaya al directorio opencv_app con

cd opencv_app

E inicie el script con:

python app.py

Debería ver alguna salida en el shell y 3 nuevas imágenes en la carpeta /opt/plcnext/opencv. ¡Es posible que tenga que actualizar su carpeta de WinSCP primero para poder verlas!

¿Qué hemos hecho?

Antes de poder ir y empezar a averiguar si nuestra luz está encendida o apagada, necesitamos hacer algún preprocesamiento en la imagen inicial, en este caso "open_cv.jpg". Lo primero que normalmente hará es reescalar la imagen para preservar algo de potencia computacional. Esto se hace en la línea 12 (del archivo app.py) con el comando cv2.resize. La salida se ve igual que la original pero es solo el 50% de la imagen inicial.

Detectar luces rojas en PLCnext con OpenCV y Python
Imagen redimensionada al 50%

El siguiente paso es convertir la imagen a escala de grises. Convertimos la imagen a escala de grises con la función encontrada en la línea 17, el resultado se puede ver en la imagen de abajo.

Detectar luces rojas en PLCnext con OpenCV y Python
Imagen en escala de grises

El último paso en nuestra tubería de preprocesamiento es umbralizar (threshold) la imagen, cada pixel bajo un cierto valor será negro, todo lo que esté por encima del mismo valor será blanco. Hay diferentes formas de umbralizar una imagen, algunas darán un resultado mucho mejor. Pero para hoy la línea 21 cv2.threshold será suficiente. El resultado se puede encontrar en la siguiente imagen. Ahora tenemos un tamaño de imagen pequeño con solo píxeles negros y blancos. Un método simple para detectar si una luz está encendida desde una cámara estacionaria sería definir una Región de Interés (ROI) y escanear píxeles blancos. Sin embargo, algoritmos más complicados le darán un mejor resultado. Enlacé algunos otros blogs que manejan este tema bajo lecturas adicionales.

Detectar luces rojas en PLCnext con OpenCV y Python
Imagen umbralizada (blanco y negro)

Lecturas adicionales

Por favor acepte cookies de marketing para ver este video.

Por favor acepte cookies de marketing para ver este video.

¿Aún un poco inseguro sobre contenedores? Puede encontrar estos blogs interesantes:

Descargo de responsabilidad

Esta es una forma de trabajar con OpenCV en el Controlador PLCnext. En este blog aprenderá cómo compilar cruzado OpenCV C++ para un objetivo PLCnext. Sin embargo, puede parecer más engorroso, ciertamente tiene su valor para sistemas de producción. Asegúrese de hacer su debida diligencia antes de decidir cuál debería ser la mejor forma para su proyecto.

La imagen no recibirá actualizaciones regulares. Si está interesado en expandir o mantener este proyecto, por favor contacte axsupport@phoenixcontact.be

Dejé intencionalmente fuera cómo podría ejecutar el contenedor indefinidamente ya que esto diferiría mucho con su aplicación. Por favor, encuentre una forma adecuada usted mismo o discútalo con las personas involucradas en su proyecto.

Créditos

El trabajo para el contenedor se basa fuertemente en el trabajo de mohaseeb.

Tecnología Industrial

  1. Reconocimiento Facial en Tiempo Real en Raspberry Pi – Guía Completa
  2. Seguimiento Automático de Objetos por Visión Artificial con Raspberry Pi y OpenCV
  3. Accesorios para Tiras LED: Conecta, Controla y Personaliza tu Iluminación
  4. Mastercam Unidad 7: Gestión de Imágenes y Creación de Trayectorias de Herramienta
  5. Biblioteca REST Python para acceder a variables de PLCnext AXC F 2152
  6. Monitorización en tiempo real de PLCnext con dashboards Tableau
  7. Crea dashboards Power BI desde datos PLCnext en la nube
  8. Crea dashboards Grafana en tiempo real para PLCnext Control en Azure IoT Hub
  9. Optimiza aplicaciones Java 9 en PLCnext Control usando Jlink
  10. Nuevo Detector de Doble Chip Logra Medición Ultra-rápida de Luz Cuántica
  11. Dominando operadores en Python: Guía completa