관리 메뉴

코코야이야기

[c++] OpenCV 템플릿매칭2 본문

프로그래밍/OpenCV

[c++] OpenCV 템플릿매칭2

코코야 2015. 9. 27. 16:30
반응형

소스코드

//부분템플릿 매칭

#include <cv.h>
#include <highgui.h>
#include <iostream>
using namespace std;

void Show(char *str, IplImage *img)
{
    cvNamedWindow( str, 1);
    cvShowImage( str, img );
}

void main()
{
    double min, max;
    CvPoint left_top;

    // 먼저, source image를 로드한 후,
    IplImage *src = cvLoadImage("소진_test.jpg", -1);

    // template image를 로드한다.
    IplImage *temp = cvLoadImage("testTemp1.jpg", -1);
 
    // 상관계수를 구할 이미지
    IplImage *coeff = cvCreateImage( cvSize( src->width - temp->width+1,
                             src->height - temp->height+1 ), IPL_DEPTH_32F, 1 );

    // 상관계수를 구하여 coeff에 그려준다.
    cvMatchTemplate(src, temp, coeff, CV_TM_CCOEFF_NORMED);

    // 상관계수가 최대값을 가지는 위치를 찾는다
    cvMinMaxLoc(coeff, &min, &max, NULL, &left_top);

    // 찾은 물체에 사격형 박스를 그린다.
    cvRectangle(src, left_top, cvPoint(left_top.x + temp->width,
                      left_top.y + temp->height), CV_RGB(255,0,0),2);

 //상관계수 최대값
 cout<<max;
 
    Show("Matching Result", src);  // 매칭 결과 이미지
    Show("Template", temp);        // 템플릿 이미지
    Show("Coefficient", coeff);      // 상관계수 이미지 보기
    cvWaitKey(0);
 
    cvReleaseImage(&src);
    cvReleaseImage(&temp);
    cvReleaseImage(&coeff);

    cvDestroyAllWindows();   // 윈도우 제거
}

 

 

 

출력영상

 

반응형
Comments