산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 산업기술

OpenCV와 Python으로 PLCnext에서 빨간불 감지하기

OpenCV는 가장 많이 사용되는 컴퓨터 비전 라이브러리 중 하나입니다. OpenCV는 얼굴 인식, 객체 추적, 바코드 스캔 등에 사용될 수 있으며, 이 블로그에서 더 중요한 것은 불이 켜져 있는지 꺼져 있는지 감지하는 것입니다. 이 블로그에서는 PLCnext에서 OpenCV와 Python을 시작하는 것을 돕고 빨간불 감지를 위한 이미지 전처리 방법에 대한 작은 코드 샘플을 제시합니다. 이 블로그는 이전 블로그 게시물에서 설명한 PLCnext 컨트롤러에서 OpenCV를 사용하는 대체 방법입니다.

사전 요구 사항

오늘은 AXC F 2152 컨트롤러를 사용하지만 AXC F 1152에서도 동일한 절차를 따를 수 있고 AXC F 3152와 RFC 4072s에서는 매우 유사한 절차로 가능합니다. 오늘의 유일한 사전 요구 사항은 사용할 컨트롤러에 Balena-Engine이 설치되어 있는 것입니다. Balena-Engine 성공적 설치 단계는 PLCnext GitHub 페이지에서 찾을 수 있습니다. 8GB SD 카드 사용을 권장합니다. 컨트롤러에 접근하기 위해 SSH 연결과 WinSCP를 사용할 것입니다. 이 도구들의 사용은 이 블로그 게시물의 범위를 벗어납니다. 이 포럼이나 빠른 구글 검색으로 좋은 가이드를 찾을 수 있습니다.

OpenCV-Python 이미지 다운로드

balena-engine 설치 후 루트 사용자로 다시 로그인하여 컨트롤러에 SSH 세션을 시작하세요.
다음 명령어를 실행하고 커피 한 잔 마시세요. 이미지가 컨트롤러에 다운로드되는 데 시간이 걸립니다.

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를 열고 /opt/plcnext 디렉토리에 opencv 폴더를 생성하세요. 경로는 /opt/plcnext/opencv가 되어야 합니다.
이 저장소의 내용을 다운로드하여 방금 생성한 디렉토리에 붙여넣으세요.

.jpg 파일을 자신의 사진으로 변경하고 app.py를 필요에 맞게 수정할 수 있습니다.

스크립트 테스트

이제 GitHub 페이지에서 다운로드한 스크립트를 테스트하고 컨테이너를 대화형으로 실행합니다. 루트 권한으로 다음 명령어를 실행하세요:

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

이제 컨테이너 내부 셸 세션에 있습니다. opencv_app 디렉토리로 이동하세요:

cd opencv_app

스크립트를 시작하세요:

python app.py

셸에 출력이 표시되고 /opt/plcnext/opencv 폴더에 3개의 새 이미지가 생성되어야 합니다. 먼저 WinSCP 폴더를 새로고침해야 볼 수 있습니다!

우리는 무엇을 했나요?

초기 이미지인 'open_cv.jpg'에서 불이 켜져 있는지 꺼져 있는지 알아내기 전에 이미지 전처리가 필요합니다. 보통 가장 먼저 하는 일은 연산 능력을 아끼기 위해 이미지 크기를 조정하는 것입니다. 이는 app.py 파일 12행 (cv2.resize 명령)에서 수행됩니다. 출력은 원본과 같아 보이지만 초기 이미지의 50% 크기입니다.

OpenCV와 Python으로 PLCnext에서 빨간불 감지하기

다음 단계는 이미지를 그레이스케일로 변환하는 것입니다. 17행의 함수로 이미지를 그레이스케일로 변환하며, 결과는 아래 이미지에서 볼 수 있습니다.

OpenCV와 Python으로 PLCnext에서 빨간불 감지하기

전처리 파이프라인의 마지막 단계는 이미지 임계값 처리입니다. 특정 값 미만의 모든 픽셀은 검정이 되고, 같은 값 초과의 모든 픽셀은 흰색이 됩니다. 이미지 임계값 처리에는 여러 방법이 있으며, 일부는 훨씬 더 좋은 결과를 줍니다. 하지만 오늘은 21행 cv2.threshold로 충분합니다. 결과는 다음 그림에서 볼 수 있습니다. 이제 검은색과 흰색 픽셀만 있는 작은 이미지 크기를 갖게 되었습니다. 고정 카메라에서 불이 켜져 있는지 감지하는 간단한 방법은 관심 영역(ROI)을 정의하고 흰색 픽셀을 스캔하는 것입니다. 그러나 더 복잡한 알고리즘이 더 좋은 결과를 줄 것입니다. 이 주제를 다루는 다른 블로그를 추가 참고 자료에 링크했습니다.

OpenCV와 Python으로 PLCnext에서 빨간불 감지하기

추가 참고 자료

https://docs.opencv.org/master/d7/d4d/tutorial_py_thresholding.html

https://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

이 비디오를 시청하려면 마케팅 쿠키 허용이 필요합니다.

이 비디오를 시청하려면 마케팅 쿠키 허용이 필요합니다.

컨테이너에 대해 여전히 확신이 없으신가요?
이 블로그들이 흥미로울 수 있습니다:

https://www.plcnext-community.net/en/hn-makers-blog/481-node-red-and-getting-started-with-docker.html

https://www.plcnext-community.net/en/hn-makers-blog/482-node-red-with-docker-tips-and-best-practice.html

https://www.docker.com/resources/what-container

면책 조항

이것은 PLCnext 컨트롤러에서 OpenCV를 사용하는 한 가지 방법입니다. 이 블로그에서는 PLCnext 타겟용 OpenCV C++을 교차 컴파일하는 방법을 배울 수 있습니다.
더 번거로워 보일 수 있지만 프로덕션 시스템에는 확실히 가치가 있습니다. 프로젝트에 가장 좋은 방법이 무엇인지 결정하기 전에 반드시 실사를 수행하세요.

이미지는 정기적인 업데이트를 받지 않습니다. 이 프로젝트 확장이나 유지보수에 관심이 있으시면 axsupport@phoenixcontact.be로 연락하세요.

컨테이너를 무기한 실행하는 방법은 애플리케이션에 따라 크게 다르므로 의도적으로 생략했습니다.
스스로 적절한 방법을 찾거나 프로젝트에 관련된 사람들과 논의하세요.

크레딧

컨테이너 작업은 mohaseeb의 작업을 기반으로 합니다.

산업기술

  1. 파이썬 연산자 마스터하기: 종합 가이드
  2. 라즈베리파이 실시간 얼굴 인식: 엔드투엔드 가이드
  3. 라즈베리파이와 OpenCV로 자동화된 비전 기반 객체 추적 시스템
  4. 신형 듀얼 칩 검출기, 양자광 초고속 측정 달성
  5. LED 스트립 액세서리 마스터하기: 연결, 제어, 맞춤 설정으로 조명 완성하기
  6. Mastercam Unit 7: 이미지 관리 및 툴패스 생성
  7. Tableau 대시보드로 PLCnext 실시간 모니터링하기
  8. PLCnext 클라우드 데이터로 Power BI 대시보드 만들기
  9. Azure IoT Hub의 PLCnext Control용 실시간 Grafana 대시보드 만들기
  10. Jlink로 PLCnext Control에서 Java 9 앱 최적화하기