【问题标题】:OpenCV C++ "CvSURFParams was not declared in this scope" errorOpenCV C++“CvSURFParams 未在此范围内声明”错误
【发布时间】:2015-03-18 19:03:28
【问题描述】:

我想在 OpenCV C++ 中实现 SURF 算法。我的包括:

#include <stdio.h>
#include <iostream>
#include "opencv2/core/core.hpp"
#include "opencv2/features2d/features2d.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/opencv.hpp"
#include "opencv2/nonfree/features2d.hpp"

当我运行这段代码时

CvSURFParams params = CvSURFParams(500, 1);

我收到“CvSURFParams 未在此范围内声明”错误。

请帮帮我

【问题讨论】:

  • 函数名是cvSURFParams,不是CvSURFParams。
  • 我改了,但是报错:“cvSURFParams'没有在这个范围内声明”

标签: c++ opencv


【解决方案1】:

您很可能正在使用 C api,请改用 cv::SURF

或者,正如评论中所建议的,正确的语法是CvSURFParams params = cvSURFParams(500, 1);

【讨论】:

  • 我使用了“使用命名空间 cv;”以下包括。我想你的答案是关于这个的。
  • 这不是命名空间的问题,你应该避免使用 C API 并使用cv::SURF 来提取 SURF 描述符。但是,如果您需要对某些遗留代码使用 C API,则在调用 cvSURFParams(500,1) 时需要使用非大写“c”
  • 不要使用cvSURFParams(500,1)直接使用cv::SURF surf_extractor(500)
  • @MESV 如果你已经下载了 OpenCv 的源码包,你可以在 opencv_source_code/samples/cpp/generic_descriptor_match.cpp 中找到如何实现它的例子。无关:如果此答案有帮助或解决了您的问题,请投票或接受它作为您问题的解决方案
  • 首先,感谢您的建议。我打开了 generic_descriptor_match.cpp,我将分析这个项目。其次,我会尝试你的答案,如果我解决了我的问题,我会接受你的解决方案。谢谢:)
【解决方案2】:

为此的 c-api 包装器已被删除。您将不得不使用 c++、cv::SURF 等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-20
    • 1970-01-01
    相关资源
    最近更新 更多