Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Промышленные технологии

Обнаружение красных индикаторов на PLCnext с OpenCV и Python

OpenCV — одна из самых используемых библиотек компьютерного зрения. OpenCV можно использовать для распознавания лиц, отслеживания объектов, сканирования штрих-кодов и, что важнее для этого блога, обнаружения того, включен ли индикатор или выключен. В этом блоге я помогу вам начать работу с OpenCV и Python на PLCnext и представлю небольшой пример кода о том, как предобрабатывать изображения для обнаружения красного индикатора. Этот блог — альтернативный способ использования OpenCV на контроллере PLCnext, объясненный в более ранних постах блога.

Предварительные требования

Сегодня я использую контроллер AXC F 2152, но можно следовать той же процедуре на AXC F 1152 и очень похожей процедуре на AXC F 3152 и RFC 4072s. Единственное предварительное требование на сегодня — иметь установленный Balena-Engine на используемом контроллере. Шаги для успешной установки Balena-Engine можно найти на странице PLCnext Github. Рекомендуется использовать SD-карту 8 Гб. Мы будем использовать SSH-соединение и WinSCP для доступа к контроллеру. Использование этих инструментов выходит за рамки этого блога. Хорошее руководство по их использованию можно найти на этом форуме или с быстрым поиском в Google.

Загрузка образа OpenCV-Python

Начните SSH-сессию к контроллеру и войдите как root пользователь снова после установки balena-engine.
Выполните следующую команду и возьмите чашку кофе, потребуется время, прежде чем образ загрузится на контроллер.

balena-engine pull pxcbe/opencv-python

Проверка установки

На этом шаге мы проверим образ и получим версию OpenCV, установленную в образе. Выполните следующую команду.
Если все пройдет хорошо, контейнер напечатает версию OpenCV и сам удалится.
На момент написания установленная версия: 4.1.0

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

Настройка рабочей директории

Откройте WinSCP и создайте папку opencv в директории /opt/plcnext. Ваш путь должен быть таким: /opt/plcnext/opencv.
Скачайте содержимое этого репозитория и скопируйте их внутрь только что созданной директории.

Вы можете заменить .jpg на свою картинку и изменить app.py под свои нужды.

Тестирование скрипта

Теперь мы протестируем скрипт, который вы скачали со страницы GitHub, и запустим контейнер интерактивно. Выполните следующую команду от root:

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

Вы теперь в сессии оболочки внутри контейнера, перейдите в директорию opencv_app:

cd opencv_app

И запустите скрипт:

python app.py

Вы должны увидеть некоторый вывод в оболочке и 3 новые изображения в папке /opt/plcnext/opencv. Возможно, вам придется обновить папку WinSCP, чтобы увидеть их!

Что мы сделали?

Прежде чем мы сможем узнать, включен ли наш индикатор, нам нужно сделать некоторую предобработку исходного изображения, в данном случае «open_cv.jpg». Первое, что обычно делают — масштабируют изображение для экономии вычислительной мощности. Это делается на строке 12 (файла app.py) командой cv2.resize. Результат выглядит так же, как оригинал, но составляет только 50% от исходного изображения.

Обнаружение красных индикаторов на PLCnext с OpenCV и Python

Следующий шаг — перевести изображение в оттенки серого. Мы делаем это функцией на строке 17, результат виден на изображении ниже.

Обнаружение красных индикаторов на PLCnext с OpenCV и Python

Последний шаг в нашем конвейере предобработки — пороговое преобразование (thresholding) изображения: каждый пиксель под определенным значением станет черным, всё выше того же значения — белым. Существует несколько разных способов порогового преобразования, некоторые дадут гораздо лучший результат. Но для сегодняшнего дня строка 21 cv2.threshold будет достаточно. Результат можно найти на следующей картинке. Теперь у нас есть маленькое изображение только с черно-белыми пикселями. Простой метод обнаружения того, включен ли индикатор, с неподвижной камерой — определить область интереса (ROI) и сканировать белые пиксели. Однако более сложные алгоритмы дадут лучший результат. Я связал другие блоги, касающиеся этой темы, в разделе дополнительного чтения.

Обнаружение красных индикаторов на PLCnext с OpenCV и Python

Дополнительное чтение

Пожалуйста, примите marketing-cookies для просмотра этого видео.

Все еще не уверены насчет контейнеров?
Вам могут быть интересны эти блоги:

Заявление об ограничении ответственности

Это один из способов работы с OpenCV на контроллере PLCnext. В этом блоге вы узнаете, как кросскомпилировать OpenCV C++ для цели PLCnext.
Хотя это может показаться более громоздким, у этого определенно есть ценность для производственных систем. Обязательно проведите свою должную осмотрительность перед принятием решения о том, какой способ лучше для вашего проекта.

Образ не будет получать регулярные обновления. Если вы заинтересованы в расширении или поддержке этого проекта, пожалуйста, свяжитесь с axsupport@phoenixcontact.be

Я намеренно не описал, как запустить контейнер бесконечно, так как это сильно будет отличаться в зависимости от вашего приложения.
Пожалуйста, найдите подходящий способ сами или обсудите это с людьми, участвующими в вашем проекте.

Кредиты

Работа над контейнером в значительной степени основана на работе mohaseeb.

Промышленные технологии

  1. Мастерство операторов Python: Полное руководство
  2. Распознавание лиц в реальном времени на Raspberry Pi — полное руководство
  3. Автоматизированное визуальное отслеживание объектов на Raspberry Pi и OpenCV
  4. Новый двухчиповый детектор достигает ультрабыстрого измерения квантового света
  5. Освоение аксессуаров для LED лент: подключение, управление и кастомизация
  6. Mastercam Урок 7: Управление изображениями и создание траекторий инструмента
  7. Мониторинг PLCnext в реальном времени с дашбордами Tableau
  8. Создание дашбордов Power BI из облачных данных PLCnext
  9. Создание дашбордов Grafana для PLCnext Control в Azure IoT Hub
  10. Оптимизация Java 9 приложений на PLCnext Control с помощью jlink