未在此范围中声明Opencv变量

Opencv Variables not declared in this scope

本文关键字:声明 Opencv 变量 范围      更新时间:2023-10-16

我刚刚开始尝试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

有人知道发生了什么事吗?我该怎么解决?

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

我在使用3.0.0测试版时遇到了同样的问题。

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

对于第二个namedWindow()参数,只需使用WINDOW_AUTOSIZE而不是CV_WINDOW_AUTOSIZE

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