API:OPENCV

구차니의 잡동사니 위키
이동: 둘러보기, 찾기

목차

홈페이지

환경설정

opencv2 패키지 설치

$ sudo apt-get install libopencv-dev

플랫폼 정보

  • 라즈베리 파이 2 / 라즈비안 2015.05.05
  • openCV 2.4.1

include path

/usr/include/opencv2
/usr/include/opencv
#include <opencv2/opencv.hpp>

컴파일시 링크 라이브러리 이름

-lopencv_core << opencv 의 -lcv
-lopencv_imgproc
-lopencv_highgui  << opencv 의 -lhighgui
-lopencv_ml
-lopencv_video
-lopencv_features2d
-lopencv_calib3d
-lopencv_objdetect
-lopencv_contrib
-lopencv_legacy
-lopencv_flann
-lopencv_nonfree

모듈

highgui

윈도우
void namedWindow(const string& winname, int flags=WINDOW_AUTOSIZE )
void destroyWindow(const string& winname)
void moveWindow(const string& winname, int x, int y)
void resizeWindow(const string& winname, int width, int height)
void updateWindow(const string& winname)
void imshow(const string& winname, InputArray mat)
마우스 이벤트
void setMouseCallback(const string& winname, MouseCallback onMouse, void* userdata=0 )
키보드 이벤트
int waitKey(int delay=0)
트랙바
int createTrackbar(const string& trackbarname, const string& winname, int* value, int count, TrackbarCallback onChange=0, void* userdata=0)
int getTrackbarPos(const string& trackbarname, const string& winname)
void setTrackbarPos(const string& trackbarname, const string& winname, int pos)

imgproc

템플릿 매칭
img = imread( argv[1], 1 );
templ = imread( argv[2], 1 );
 
matchTemplate( img, templ, result, match_method );
normalize( result, result, 0, 1, NORM_MINMAX, -1, Mat() );
minMaxLoc( result, &minVal, &maxVal, &minLoc, &maxLoc, Mat() );

if( match_method  == CV_TM_SQDIFF || match_method == CV_TM_SQDIFF_NORMED ) matchLoc = minLoc;
else matchLoc = maxLoc;

예제 코드

카메라 읽어서 띄우는 예제

$ cat cv.cpp
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main(int argc, char** argv)
{
        // opencv 2 style
        VideoCapture cap(0);
        if(!cap.isOpened())
        {
                cout << "No camera detected" << endl;
                return -1;
        }
        else
        {
                cout << "In capture ..." << endl;
                cap.set(CV_CAP_PROP_FRAME_WIDTH, 320);
                cap.set(CV_CAP_PROP_FRAME_HEIGHT, 240);
        }

        namedWindow( "Display window", WINDOW_AUTOSIZE );

        for(;;)
        {
                Mat frame;
                if(!cap.read(frame)) break;

                imshow("Display window", frame);
                if(waitKey(30) >= 0) break;
        }

        return 0;
}
$ cat Makefile
all:
        g++ cv.cpp -lopencv_core -lopencv_video -lopencv_highgui

clean:
        rm a.out
개인 도구
이름공간

변수
행위
둘러보기
도구모음