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

OpenCV – Python, Detección de luz roja en PLCnext

Open CV es una de las bibliotecas de Computer Vision más utilizadas que existen. Open CV se puede usar para el reconocimiento facial, el seguimiento de objetos, el escaneo de códigos de barras y, lo que es más importante para este blog, para detectar si una luz está encendida o apagada. En este blog, lo ayudaré a comenzar con Open CV y ​​Python en PLCnext y presentaré una pequeña muestra de código sobre cómo preprocesar sus imágenes para la detección de luz roja. Este blog es una forma alternativa de usar Open-CV en un controlador PLCnext explicado en publicaciones de blog anteriores.

Requisitos

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á utilizando. Los pasos para una instalación exitosa de Balena-Engine se pueden encontrar en la página PLCnext Github. Se recomienda utilizar una tarjeta SD de 8 gb. 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 usarlos en este foro o con una búsqueda rápida en Google.

Descargar la imagen OpenCV-Python

Inicie una sesión SSH en el controlador e inicie sesión como usuario raíz nuevamente después de la instalación de balena-engine.
Ejecute el siguiente comando y tome una taza de café, tomará 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 e instalaremos la versión Open-CV en la imagen. Ejecute el siguiente comando.
Si todo va bien, el contenedor imprimirá la versión Open-CV y el contenedor se eliminará solo.
Al momento de escribir, 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. Por lo tanto, su ruta debería ser /opt/plcnext/opencv.
Descargue el contenido de este repositorio y cópielo y péguelo dentro del directorio que acabamos de crear.

Puede cambiar el archivo .jpg con su propia imagen y modificar el archivo app.py para que se ajuste a sus necesidades.

Prueba el guión

Ahora probaremos el script que descargó de la página de GitHub y ejecutaremos el contenedor de forma interactiva. 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, llame al directorio opencv_app con

cd opencv_app

Y comience el script con:

python app.py

Debería ver algunos resultados en el shell y 3 imágenes nuevas en la carpeta /opt/plcnext/opencv. ¡Es posible que primero deba actualizar su carpeta winSCP para poder verlos!

Entonces, ¿qué hemos hecho?

Antes de que podamos ir y comenzar a averiguar si nuestra luz está encendida o apagada, debemos realizar un procesamiento previo en la imagen inicial, en este caso, "open_cv.jpg". Lo primero que harás con utilidad es cambiar la escala de la imagen para preservar algo de poder computacional. Esto se hace en la fila 12 (de app.py) archivo con el cv2.resize dominio. La salida tiene el mismo aspecto que el original pero es solo el 50 % de la imagen inicial.

El siguiente paso es escalar de grises la imagen. Escalamos la imagen en gris con la función que se encuentra en la fila 17, el resultado se puede ver en la imagen a continuación.

El último paso en nuestra canalización atractiva es establecer un umbral en la imagen, cada píxel por debajo de cierto valor será negro, todo lo que esté por encima del mismo valor será blanco. Hay algunas formas diferentes de ocultar una imagen, algunas darán un resultado mucho mejor. Pero para hoy 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 en blanco y negro. 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 buscar píxeles blancos. Sin embargo, los algoritmos más complicados le darán un mejor resultado. Enlacé algunos otros blogs que tratan este tema en lecturas adicionales.

Lecturas adicionales

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

Acepte las cookies de marketing para ver este video.

Acepte las cookies de marketing para ver este video.

¿Aún no estás seguro acerca de los contenedores?
Puede encontrar estos blogs interesantes:

https://www.plcnext-community.net/en/hn-makers-blog/481-node-red-y-empezando-con-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

Descargo de responsabilidad

Esta es una forma de trabajar con open-cv en el controlador PLCnext. En este blog, aprenderá cómo compilar de forma cruzada open-cv c ++ para un objetivo PLCnext.
Aunque pueda parecer más engorroso, seguramente tiene su valor para los sistemas de producción. Asegúrese de hacer su diligencia debida antes de decidir cuál debería ser la mejor manera para su proyecto.

La imagen no recibirá actualizaciones periódicas. Si está interesado en expandir o mantener este proyecto, comuníquese con [email protected]

Omití a propósito cómo podría ejecutar el contenedor indefinidamente, ya que esto diferiría mucho con su aplicación.
Encuentre una forma adecuada usted mismo o discútalo con las personas involucradas en su proyecto.

Créditos

El trabajo del contenedor se basa en gran medida en el trabajo de mohaseeb


Tecnología Industrial

  1. Operadores de Python
  2. Reconocimiento facial en tiempo real:un proyecto de principio a fin
  3. Seguimiento automático de objetos por visión
  4. La combinación de chips electrónicos y fotónicos permite una detección ultrarrápida de luz cuántica
  5. Accesorios LED:accesorios para tiras de luces LED
  6. 24 Unidad 7:Mastercam
  7. Una biblioteca simple basada en REST para usar variables en PLCnext AXC F 2152 PLC de Python
  8. Tablero PLCnext de Tableau
  9. Informes de PLCnext Power BI
  10. Paneles de PLCnext Grafana
  11. Aplicación Java en PLCnext Control