Home » 파이카메라 활용강좌 : V4L2(Video4Linux) 기반 OpenCV 설치

라즈베리파이 V4L2 OpenCV 테스트

Created Date: 2013.09.11
Modified Date: 2013.12.26
revision 2

안녕하세요 산딸기마을 이장 나무꾼 입니다.

 

회사업무도 바빠지고 해서 몇 일 동안 포스트 진행을 못 한점 반성해요. ㅠ.ㅠ

오늘은 미루어왔던 V4L2 기반으로 OpenCV 기본 테스트를 구현해 보려고 한다.

자 그럼 그간 미루어 두었던 OpenCV 포스트를 진행하기 앞서 V4L2 드라이버 설치는 “파이카메라 활용강좌:라즈베리파이 PI-CAM V4L2(VIDEO4LINUX2) 설치” 를 참고로 드라이버를 설치 후에 아래 내용을 진행 해주기 바란다.

그럼 본격적으로 Pi-CAM V4L2 드라이버를 이용한 OpenCV를 설치 해 보자.

 

1. V4L2 OpenCV 설치

 

라즈베리파이 V4L2 드라이버를 이용할 경우에는 아래와 같은 명령어를 입력 해 OpenCV 를 설치 할 수가 있다.

pi@rasplay ~ $ sudo apt-get install libopencv-dev

 

2. OpenCV 파일 다운로드 및 테스트

 

2.1. opencv_test.cpp 파일을 다운로드.

pi@rasplay ~ $ wget http://linux-projects.org/downloads/examples/opencv_test.cpp

 

2.2. opencv_test.cpp 파일 작성.

nano 편집기를 열어 아래 소스를 작성 및 저장을 하자.

pi@rasplay ~ $ sudo nano opencv_test.cpp

 

#include “opencv2/highgui/highgui.hpp”
#include <iostream>

using namespace std;
using namespace cv;

int main(int argc, char** argv){
VideoCapture cap(-1);
if (!cap.isOpened())
{
cout << “Cannot open camera” << endl;
return -1;
}
cap.set(CV_CAP_PROP_FRAME_WIDTH, 640);
cap.set(CV_CAP_PROP_FRAME_HEIGHT, 480);

namedWindow(“Output”,CV_WINDOW_AUTOSIZE);

while (1)
{
Mat frame;
bool bSuccess = cap.read(frame);

if (!bSuccess)
{
cout << “Cannot read a frame from camera” << endl;
break;
}
imshow(“Output”, frame);

if (waitKey(30) == 27)
{
cout << “Exit” << endl;
break;
}
}
return 0;
}

 

3. opencv_test 컴파일 및 실행

 

3.1 opencv_test 컴파일 하기.

pi@rasplay ~ $ g++ -lopencv_core -lopencv_highgui -L/usr/lib/uv4l/uv4lext/armv6l -luv4lext -Wl,-rpath,'/usr/lib/uv4l/uv4lext/armv6l' opencv_test.cpp -o opencv_test

 

3.2 opencv_test 실행.

pi@rasplay ~ $ ./opencv_test
그림51

Tip : 기존에 모니터에 overaly로 출력되던 옵션 문제를 오로카에 계신 ” antee0987 ” 님께서 문제를 해결해 주셨습니다.  장치활성화 시에 아래 옵션으로 실행을 하시면 이와 같은 문제가 발생치 않습니다.

uv4l --driver raspicam --auto-video_nr --nopreview

 

  • 김동영

    컴파일 하는 중에..
    제 rpi에는 usr/lib/ 안에 uv4l이 없는데요..
    주소 다시한번만 확인해주시겠어요?ㅜ

  • 유동협

    안녕 하세요 다름이 아니라 여기서 fps 바꿔서 출력 해보니까 다음과 같은 에러가 뜹니다. ㅠㅠ
    int fps = (int)(cap.get(CV_CAP_PROP_FPS));
    cout <<“fps : “<< fps << endl;
    하니까
    HIGHGUI ERROR: V4L2: Unable to get property (5) – Invalid argument
    fps : -1

    다음과 같이 나옵니다 ㅠㅠ 어떻게 해결 해야 하나요?

  • 유동협

    또한 여기서 cvtcolor를 하면 정의되지 않은 함수라고 나오는데 어떻게 하나요?

산딸기마을 포스트 검색

공동제작 공동프로젝트 무상후원 기관

산딸기마을 기부하기

산딸기마을 방문자 현황

Flags Countries Visits Page views
South Korea 626063 1845660
United States 10882 26091
Japan 5011 13204
Germany 2755 5151
India 1897 2902
Canada 1729 4640
United Kingdom 1596 2642
Australia 1240 2901
Russia 1219 1677
China 1077 2239
Total Pageviews: 1936700