기술 심층 분석

OpenCV를 Python과 함께 사용하여 카메라에 액세스하는 방법

OpenCV를 사용하여 카메라에 액세스하는 방법을 알아봅니다. OpenCV는 이미지 디코딩, 향상, 색 공간 변환, 개체 감지 등을 수행하는 오픈 소스 BSD 라이선스 이미지 처리 번들입니다. 간단한 Python 스크립트를 사용하여 OpenCV Python으로 컬러 카메라인 See3CAM_130을 스트리밍하는 방법을 알아봅니다.

OpenCV-with-Python

이 블로그에서는 간단한 Python 스크립트를 사용하여 OpenCV Python으로 컬러 카메라를 스트리밍하는 방법을 설명했습니다.

카메라 스트리밍과 함께 표준 UVC 제어 및 이미지 캡처 옵션 지원과 같은 고급 기능은 다음 블로그를 참조하세요: https://www.e-consystems.com/blog/camera/camera-board/interface-high-quality-cameras-with-opencv-python/

OpenCV(Open Computer Vision)는 기본 이미지 디코딩, 향상, 색 공간 변환, 객체 감지, 객체 추적 등 모든 유형의 이미지 처리 기능에 대한 기능을 포함하는 오픈 소스 BSD 라이선스 이미지 처리 번들입니다.

이 블로그는 간단한 Python 스크립트를 사용하여 OpenCV용 카메라에 액세스하고 사용하는 방법을 보여주기 위해 작성되었습니다.

See3CAM 카메라

See3CAM은 e-con Systems™의 USB 3.0 카메라 시리즈입니다 . 이 카메라는 추가 장치 드라이버를 수동으로 설치할 필요가 없는 Windows/Linux에서 플러그 앤 플레이를 지원하는 UVC 규격입니다.

테스트된 e-con 카메라:  

이 샘플 애플리케이션에서는 e-con Systems™ 13MP 자동 초점 USB 3.0 카메라 – See3CAM_130을 사용합니다 . 간단한 OpenCV-Python 애플리케이션에서 See3CAM_130 카메라에 액세스하는 방법에 대한 단계별 절차를 살펴보겠습니다. 이 애플리케이션은 카메라에서 프레임을 가져와 미리보기 창에 표시합니다.

Ubuntu PC에서 OpenCV와 해당 종속성을 구축하는 것부터 시작해 보겠습니다.

테스트 시스템:

호스트 PC: Ubuntu-14.04
OpenCV 버전 : 3.4.1
파이썬 버전: 2.7

OpenCV 소스 다운로드

다음 명령을 통해 리눅스용 필수 OpenCV 버전을 다운로드하세요.

$ wget https://github.com/opencv/opencv/archive/3.4.1.zip

종속성 설치:

OpenCV가 USB 카메라와 작동하려면 다음 종속성이 필요합니다. 다음 명령을 사용하여 종속성을 설치합니다.

# libav video input/output development libraries
$ sudo apt-get install libavformat-dev libavutil-dev libswscale-dev
# Video4Linux camera development libraries
$ sudo apt-get install libv4l-dev
# OpenGL development libraries (to allow creating graphical windows)
$ sudo apt-get install libglew-dev
# GTK development libraries (to allow creating graphical windows)
$ sudo apt-get install libgtk2.0-dev
# Install the OpenCV python
$ sudo apt-get install python-opencv

소스에서 OpenCV를 구성하고 빌드합니다.

종속성을 설치한 후 이제 다음 명령을 사용하여 OpenCV를 빌드하고 설치해야 합니다.

$ unzip opencv-3.4.1.zip
$ cd opencv-3.4.1
$ mkdir build && cd build
$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D WITH_TBB=OFF -D BUILD_TBB=OFF -D WITH_V4L=ON -D WITH_LIBV4L=OFF -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF ..

컴파일 및 설치:

다음 명령은 “/usr/local/lib/” 위치에 OpenCV 라이브러리를 빌드하고 설치합니다.

$ sudo make j4 install

이제 Ubuntu PC에 OpenCV를 구축하고 설치했습니다. OpenCV를 사용하여 카메라를 스트리밍하기 위해 샘플 Python 애플리케이션을 준비하는 방법을 살펴보겠습니다.

다음 샘플 OpenCV Python 코드는 장치 비디오 노드를 열고, 해상도를 설정하고, 프레임을 가져온 다음 미리 보기 창에 프레임을 표시하는 방법을 설명합니다.

  1. OpenCV Python 패키지 가져오기

import cv2

  1. See3CAM_130에 액세스하려면 카메라 비디오 노드를 엽니다.

# Open the device at the ID 0
cap = cv2.VideoCapture(0)
# Check whether user selected camera is opened successfully.
if not (cap.isOpened()):
print("Could not open video device")

  1. OpenCV 카메라 제어 속성을 사용하여 카메라 해상도 설정

# To set the resolution
cap.set(cv2.cv.CV_CAP_PROP_FRAME_WIDTH, 640)
cap.set(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT, 480)

  1. 카메라에서 연속적으로 프레임을 가져와 while 루프를 사용하여 미리보기 창에 표시합니다. 루프를 중단하고 응용 프로그램을 종료하려면 ‘q’ 키를 입력하세요.

while(True):
# Capture frame-by-frame
ret, frame = cap.read()
# Display the resulting frame
cv2.imshow('preview',frame)
# Waits for a user input to quit the application
if cv2.waitKey(1) & 0xFF == ord('q'):
break

  1. 카메라를 놓은 다음 모든 imshow() 창을 닫습니다.

# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()

  • 샘플 코드를 “camera_stream.py”로 저장합니다.

import cv2
# Open the device at the ID 0
cap = cv2.VideoCapture(0)
# Check whether user selected camera is opened successfully.
if not (cap.isOpened()):
print("Could not open video device")
# To set the resolution
cap.set(cv2.cv.CV_CAP_PROP_FRAME_WIDTH, 640)
cap.set(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT, 480)
while(True):
# Capture frame-by-frame
ret, frame = cap.read()
# Display the resulting frame
cv2.imshow('preview',frame)
# Waits for a user input to quit the application
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()

  • 이제 프로그램을 컴파일하고 실행합니다.

python2 camera_stream.py

OpenCV 애플리케이션의 소스 코드를 다운로드하려면 여기를 클릭하세요. 해당 주제에 대해 추가 문의사항이 있으시면 댓글을 남겨주세요.

코드 다운로드

cameras-using-OpenCV-with-Python

이 간단한 Python 스크립트를 사용하여 OpenCV용 카메라에 액세스하고 사용할 수 있습니다.

Related posts

Leave a Comment