2012-10-13 62 views
0

我有一個程序,應該做的圖像和模板的模板匹配,這裏是代碼:缺少Scope變量OpenCV的C++

int main() 
{ 
    IplImage* imgOriginal = cvLoadImage("image.jpg", 0); 
    IplImage* imgTemplate = cvLoadImage("template.jpg", 0); 
    IplImage* imgResult = cvCreateImage(cvSize(imgOriginal->width-imgTemplate->width+1, imgOriginal->height-imgTemplate->height+1), IPL_DEPTH_32F, 1); 
    cvZero(imgResult); 
    cvMatchTemplate(imgOriginal, imgTemplate, imgResult, CV_TM_CCORR_NORMED); 
    double min_val=0, max_val=0; 
    CvPoint min_loc, max_loc; 
    cvMinMaxLoc(imgResult, &min_val, &max_val, &min_loc, &max_loc); 
    cvRectangle(imgOriginal, max_loc, cvPoint(max_loc.x+imgTemplate->width, max_loc.y+imgTemplate->height), cvScalar(0), 1); 
    printf("%f", max_val); 
    cvNamedWindow("result"); 
     cvShowImage("result", imgOriginal); 
     cvWaitKey(0); 
     return 0; 
} 

包括文件:

#include "opencv2/highgui/highgui.hpp" 
#include "opencv2/imgproc/imgproc.hpp" 

#include <iostream> 
#include "stdio.h" 

using namespace cv; 
using namespace std; 

當我運行代碼,我得到這個錯誤:

templateMatching.cpp:16:75: error: ‘cvMatchTemplate’ was not declared in this scope 

任何想法是什麼問題是?在此先感謝,馬特

+2

請還包括您所使用的'#include'指令。作爲錯誤說, –

+0

,問題是功能沒有聲明。您可能會缺少包含文件。 –

+0

這是其中的:#include 「opencv2/highgui/highgui.hpp」 的#include 「opencv2/imgproc/imgproc.hpp」 的#include 的#include 「stdio.h中」 使用的命名空間CV ; using namespace std; – MattTheHack

回答

1

你需要包括

#include "opencv2/imgproc/imgproc_c.h"