3

系统-

  1. Windows 8.1 64 位机器
  2. OpenCV 3.0.0
  3. 视觉工作室 12 2013

我已经用 contrib 模块构建了 openCV 3.0.0。但是,当我编译这段代码时,我得到了错误。

#include <OpenNI.h>                     //used for taking in input from xtion pro live
#include <iostream>
#include <opencv2\highgui\highgui.hpp>  
#include <opencv2\core\core.hpp>        
#include <opencv2\features2d\features2d.hpp>
#include <opencv2/features2d.hpp>
#include <opencv2/xfeatures2d.hpp>      // these are the libraries in the new location     (they contain SURF implementation)
#include <opencv2/xfeatures2d/nonfree.hpp>

using namespace std;
//using namespace openni;
using namespace cv;

int main(void)
{
    //from sample code 
    int minHessian = 400;

    SurfFeatureDetector detector(minHessian);

    return 0;
}

错误是-

错误 C2065:“SurfFeatureDetector”:未声明的标识符

4

3 回答 3

3

在 OpenCV 3.0 中构建 Surf 特征检测器的语法与 2.x 版本不同。

Ptr<SURF> surf=SURF::create(minHessian);
std::vector<KeyPoint> keypts;
Mat desc;
surf->detectAndCompute(img,noArray(),keypts,desc);

如果上面的示例仍然会引发任何错误,我深表歉意,我没有工作版本来对其进行现场测试。

于 2015-02-11T12:40:52.630 回答
1

我认为对于 SURF,您必须使用“额外”模块。看看那个:https ://github.com/itseez/opencv_contrib/

基本上你需要做的是下载代码(opencv_contrib)。将其添加到 opencv 源文件夹中的模块列表中。然后,在 cmake 中,您必须将路径 < opencv_contrib >/modules 添加到 EXTRA_MODULES_PATH 中。最后,通过 cmake 生成项目后,您将在 opencv 解决方案中找到 xfeatured2d(我认为这是您需要的),您将能够构建并使用它们。

于 2015-11-11T10:34:01.940 回答
0

在 opencv3.0 中,它结合了 opencv_world300d.lib (debug) 和 opencv_world300.lib (release) 中的所有库。为此,您可以使用#include 来代替其他包含。另一方面,它们是opencv3.1中的opencv_world310d.lib(调试)和opencv_world310.lib(发布)。

于 2016-04-12T16:06:02.327 回答