未在此范围中声明Opencv变量
Opencv Variables not declared in this scope
我刚刚开始尝试opencv。并且已经在我的另一台电脑上成功运行了这个程序(有两台电脑)。
我遵循了与成功构建的计算机相同的安装步骤,但它不起作用——在我使用cmake
和make
构建项目后,它会提示下面的错误消息。
在官方网站上测试此示例: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_NORMED
、TM_CCORR
等)。
相关文章:
- 如果不在窗口 10 中声明名为 openCV 的 openCV namedWindow,QT 图像显示将无法正常工作
- 将本地 OpenCV Mat 变量声明为静态以防止重新分配
- 移植:OpenCV 2.4.3 -> OpenCV 3.1.,cvGetMat 未在此范围内声明
- 在 OpenCV C++中使用未声明的标识符'createFisherFaceRecognizer'
- OpenCV - Ptr 语法和类定义/声明 - 混淆?
- Opencv C++ 声明一个类型为 uint8 的矩阵
- 如何在 OPENCV 3.x C++ Visual Studio 2015 中声明 BruteForceMatcher
- 结构从运动(openCV):“重建”未在此范围内声明
- OpenCV C++:声明一个新变量会导致堆栈损坏
- 如何在 opencv 中声明存储 0 到 1 之间的浮点值的 Mat
- 如何在 OpenCV 中声明具有 3 维的矩阵
- OpenCV 符号未在此范围内声明
- 如何在 OpenCV 中声明向量
- 错误:无法在OpenCV 3中将变量“bg”声明为抽象类型“cv::BackgroundSubtractactorMOG
- 未在此范围中声明Opencv变量
- mat类opencv中的begin()方法声明
- OpenCV:“SiftDescriptorExtractor”未在此范围内声明
- OpenCV-声明一个向量垫
- 如何克服OpenCV和RTMaps中结构C++的双重声明
- 声明一个与openCV具有相同值的矩阵