Opencv变量未在此范围内声明

时间:2013-11-23 06:55:44

标签: c++ opencv

我刚开始尝试opencv。并且已经在我的另一台计算机上成功运行程序(有两台计算机)。

我已经按照与已成功构建的计算机相同的安装步骤进行操作,但在我cmakemake构建之后,它无法提示下面的错误消息该项目。

在官方网站上测试此示例: http://docs.opencv.org/doc/tutorials/imgproc/histograms/template_matching/template_matching.html#code

/home/howard/Documents/opencv/opencv-sample/template_match/template_match.cpp:11:22: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
 char* image_window = "Source Image";
                      ^
/home/howard/Documents/opencv/opencv-sample/template_match/template_match.cpp:12:23: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
 char* result_window = "Result window";
                       ^
/home/howard/Documents/opencv/opencv-sample/template_match/template_match.cpp: In function ‘int main(int, char**)’:
/home/howard/Documents/opencv/opencv-sample/template_match/template_match.cpp:28:30: error: ‘CV_WINDOW_AUTOSIZE’ was not declared in this scope
   namedWindow( image_window, CV_WINDOW_AUTOSIZE );
                              ^
/home/howard/Documents/opencv/opencv-sample/template_match/template_match.cpp:32:26: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
   char* trackbar_label = "Method: \n 0: SQDIFF \n 1: SQDIFF NORMED \n 2: TM CCORR \n 3: TM CCORR NORMED \n 4: TM COEFF \n 5: TM COEFF NORMED";
                          ^
/home/howard/Documents/opencv/opencv-sample/template_match/template_match.cpp: In function ‘void MatchingMethod(int, void*)’:
/home/howard/Documents/opencv/opencv-sample/template_match/template_match.cpp:68:24: error: ‘CV_TM_SQDIFF’ was not declared in this scope
   if( match_method  == CV_TM_SQDIFF || match_method == CV_TM_SQDIFF_NORMED )
                        ^
/home/howard/Documents/opencv/opencv-sample/template_match/template_match.cpp:68:56: error: ‘CV_TM_SQDIFF_NORMED’ was not declared in this scope
   if( match_method  == CV_TM_SQDIFF || match_method == CV_TM_SQDIFF_NORMED )
                                                        ^
make[2]: *** [CMakeFiles/template_match.dir/template_match.cpp.o] Error 1
make[1]: *** [CMakeFiles/template_match.dir/all] Error 2
make: *** [all] Error 2

有人知道发生了什么,我该如何解决?

2 个答案:

答案 0 :(得分:2)

我发现了问题,因为我安装了一个不稳定的版本,你不应该直接从repo https://github.com/Itseez/openc/安装opencv,转到发布版本并下载最新版本。

答案 1 :(得分:0)

我使用3.0.0 beta遇到了同样的问题。

您的第一行是C ++警告。如果您只是想尝试运行测试,那么现在就可以忽略它。否则,请使用std::string并在需要时使用c_str()方法进行转换。这些char* windowName = "My Window"行显示在OpenCV教程中。

对于第二个namedWindow()参数,只需使用WINDOW_AUTOSIZE代替CV_WINDOW_AUTOSIZE

对于模板匹配,您还需要取出CV_前缀并使用TM_SQDIFF。看起来它也适用于所有其他人(TM_SQDIFF_NORMEDTM_CCORR等)。