임베디드 비전 키트

임베디드 비전을 향한 기존 머신 비전의 진화는 빠르게 이루어지고 있습니다. 비용 요소가 중요한 역할을 하는 이러한 소형 시스템은, 성능을 향상시킴으로써 에너지를 더 적게 소비합니다. 그러나 임베디드 비전 장치를 개발하는 것은 시간과 비용이 많이 들 수 있습니다. 데이터 인터페이스, 성능, 저장 공간 및 사용자 인터페이스와 관련하여 고도로 전문화된 이러한 장치의 한계는 표준 컴포넌트를 갖춘 데스크탑 워크 스테이션에 비해 하드웨어 처리 및 소프트웨어 개발을 매우 어렵게 만듭니다. 특히 독점적인 개발 (하드웨어 플랫폼, 펌웨어 및 소프트웨어)의 경우 첫 번째 결과를 사용할 수 있을 때까지 많은 시간을 낭비할 수 있습니다.

그러나 특히 개발-전 단계에서는 즉시 사용 가능한 테스트를 허용하는 여러 적합한 임베디드 표준 컴포넌트들이 있습니다. 검증된 소프트웨어 솔루션과 함께, 비전 어플리케이션에 대한 첫 번째 통찰을 매우 빠르게 도출할 수 있습니다.

테크팁은 uEye 카메라와 Raspberry Pi 3로 간단한 임베디드 비전 어플리케이션을 구현하는 방법을 몇 가지 간단한 단계로 보여줍니다.

uEye Python 인터페이스 및 OpenCV가 포함된 임베디드 비전 어플리케이션
uEye Python 인터페이스 및 OpenCV가 포함된 임베디드 비전 어플리케이션

1단계: 하드웨어 준비

Raspbian OS로 Raspberry Pi 3를 설정하고 시스템을 최신 소프트웨어 버전으로 업데이트합니다.

pi @ raspberrypi : ~ $ sudo apt-get 업데이트 & & apt-get 업그레이드

Raspberry Pi 설정에 대한 지침은 인터넷에서 찾을 수 있습니다. 기본적으로 다른 ARMv7 호환 임베디드 보드 (예 : Odroid XU4)를 데모에 사용할 수 있습니다. 그러나, 쿼드 코어 CPU가 장착된 Raspberry Pi3는 간단한 이미지 처리 작업에 충분한 성능을 제공하며 Raspbian OS에는 많은 사전-설치된 컴포넌트가 함께 제공됩니다. 다른 모든 것은 패키지 소스를 통해 쉽게 설치할 수 있습니다.

uEye USB 카메라를 Raspberry Pi의 USB 포트에 연결합니다.

pi @ raspberrypi : ~ $ sudo pip install pyueye

그러면 Python 2.7과 함께 사용할 uEye Python 인터페이스가 설치됩니다. 필요한 모듈 종속성은 PIP에 의해 자동으로 설치됩니다. 올바른 설치를 확인하려면 Python 인터프리터를 사용하고 uEye 모듈을 가져오십시오.

pi@raspberrypi:~ $ python
Python 2.7.9 (기본값, 2016 년 9 월 17 일, 20:26:04)
linux2의 [GCC 4.9.2]
자세한 내용을 보려면 "help", "copyright", "credits"또는 "license"를 입력하세요.
>>> pyueye 가져오기 ueye에서
>>>

오류 메시지가 반환되지 않으면 성공적으로 설치된 것입니다.

3 단계: OpenCV 설치

OpenCV 개발 라이브러리는 Raspbian 패키지 소스에서 쉽게 설치할 수 있습니다. 이전 버전 (2.4.9.1)이 있지만, 데모에는 충분합니다. OpenCV 라이브러리에 대한 Python 2.7 바인딩은 패키지 소스에서 설치할 수도 있습니다. Python 3을 사용하려면 임베디드 플랫폼용 코드 소스에서 직접 컴파일해야 합니다. 온라인에서 간단한 지침을 찾을 수도 있습니다.

pi @ raspberrypi : ~ $ sudo apt-get install libopencv-dev python-opencv

OpenCV 모듈 "cv2"를 가져와서 Python interpreter로 이 설치를 확인할 수도 있습니다.

4 단계: PyuEye 샘플 어플리케이션 다운로드 및 실행

테크팁 웹 사이트에 링크된 소스 코드 예제를 다운로드하여, uEye 및 Python 인터페이스로 자체 이미지 처리 어플리케이션을 시작하고, Raspberry Pi의 디렉토리에 압축을 풉니다.

소스 코드 예제는 완전히 Python으로 작성되었습니다. 따라서 Raspberry Pi의 시스템 아키텍처 (ARMv7 A)에 대해 교차 컴파일할 필요가 없습니다. 따라서 플랫폼에 독립적이며 직접 실행할 수 있습니다. 즉, 이러한 시스템에 요구 사항 (uEye 드라이버, PyuEye 인터페이스, Python 2.7)이 설치된 경우 Windows 또는 Linux 데스크톱 시스템에서 이 소스 코드 예제를 실행할 수도 있습니다. PyuEye 소스 코드 예제는 예제 프로그램의 여러 부분에 대한 클래스와 기능을 제공하는 4개의 Python 파일로 구성됩니다.

1) pyueye_example_camera.py

자주 사용하는 카메라 기능이 포함된 "카메라" 클래스를 제공합니다.

2) pyueye_example_gui.py

"PyuEyeQtView"및 "PyuEyeQtApp" 클래스를 사용하여 간단한 Qt 위젯 GUI 어플리케이션을 만들 수 있습니다. 이 모듈은 Qt4를 기반으로 하며 Python Qt4 바인딩 (PyGt4)을 사용합니다. Qt4는 이미 Raspbian Jessie에 통합되어 있습니다. 따라서 패키지 소스에서 Python 바인딩을 설치할 수 있습니다.

pi @ raspberrypi : ~ $ sudo apt-get install python-qt4 python-qt4-doc

3) pyueye_example_utils.py

이 모듈은 카메라 어플리케이션을 개발할 때 매우 유용한 중요한 편의 기능과 클래스를 제공합니다. 예외 처리에서 카메라 데이터 및 이미지 저장 관리에 이르기까지 유용한 옵션이 많이 있습니다.

4) pyueye_example_main.py

메인 모듈은 간단한 Qt 어플리케이션 프레임 워크를 생성하고, 연결된 카메라를 열고 초기화하며, OpenCV를 사용한 간단한 이미지 처리가 구현되는 이미지 처리 콜백 기능을 제공합니다. 실행 중인 데모는 연결된 카메라의 라이브 이미지를 보여주고, 처리 결과를 오버레이합니다.

pi@raspberrypi:~/example $ python pyueye_example_main.py

OpenCV 이미지 처리

OpenCV를 사용한 간단한 이미지 처리 작업은 이미지에서 원을 검색하고, 강조 표시합니다.

OpenCV에는 이 작업을 위한 cv2.HoughCircles() 함수가 포함된 완전한 구현이 포함되어 있기 때문에, 메인 모듈의 몇 줄의 코드만으로도 충분합니다. OpenCV로 작업하기 위해, "cv2"및 "numpy"를 가져왔습니다.

from pyueye_example_camera import Camera
from pyueye_example_utils import FrameThread
from pyueye_example_gui import PyuEyeQtApp, PyuEyeQtView
from PyQt4 import QtGui

from pyueye import ueye

import cv2
import numpy as np
def process_image(self, image_data):

    # reshape the image data as 1dimensional array
    image = image_data.as_1d_image()    
    # make a gray image
    image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    #image = cv2.medianBlur(image,5)
    # find circles in the image
    circles = cv2.HoughCircles(image, cv2.cv.CV_HOUGH_GRADIENT, 1.2, 100)
    # make a color image again to mark the circles in green
    image = cv2.cvtColor(image, cv2.COLOR_GRAY2BGR)
    
    if circles is not None:
	   # convert the (x, y) coordinates and radius of the circles to integers
	   circles = np.round(circles[0, :]).astype("int") 
	   # loop over the (x, y) coordinates and radius of the circles
	   for (x, y, r) in circles:
		  # draw the circle in the output image, then draw a rectangle
		  # corresponding to the center of the circle
		  cv2.circle(image, (x, y), r, (0, 255, 0), 6)
    
    # show the image with Qt
    return QtGui.QImage(image.data,
                        image_data.mem_info.width,
                        image_data.mem_info.height,
                        QtGui.QImage.Format_RGB888)
OpenCV는 이미지 데이터에서 원을 찾아 강조 표시합니다.
OpenCV는 이미지 데이터에서 원을 찾아 강조 표시합니다.

OpenCV로 어플리케이션을 쉽게 수정하고, 다른 처리 작업을 테스트할 수 있습니다. Python의 경우, 일반적으로 수정된 어플리케이션을 직접 실행할 수 있습니다.

Manual

All information at a glance - you can either view the manual online here or download it for offline use.

ReadMe

IDS peak 1.2.1 for Windows

Release Notes

These release notes describe the changes of IDS peak 1.2, which supports Python as an additional programming language besides .NET (incl. C#) and C/C++.