如何在OpenCV C ++中使用FeatureDetector?

时间:2011-07-01 21:51:45

标签: c++ opencv feature-detection

我正在按照安装指南使用安装了OpenCV 2.1的VS 2008。 FeatureDetector / SurfFeatureDetector在文档中列为类,但它们被视为“语法错误:标识符'SurfFeatureDetector”

这几乎就是我的全部代码。

#include "cv.h"
#include "highgui.h"

Ptr<FeatureDetector> *detect = new SurfFeatureDetector();

我尝试了一系列随机组合来实现这一点。如何初始化featuredetector?

4 个答案:

答案 0 :(得分:3)

你正在声明一个指向cv :: Ptr的指针 - 你真的应该只有cv :: Ptr。将您的代码更改为

#include "cv.h"
#include "highgui.h"

using namespace cv;
Ptr<FeatureDetector> detect = new SurfFeatureDetector();

它应该有用。

答案 1 :(得分:1)

我认为您有安装问题,请尝试从这里进行树脂安装:sourceforge.net/projects/opencvlibrary/files/opencv-win/2.2

另一个选择是你的预编译器已经定义了__OPENCV_OLD_CV_H__。 在#include "cv.h"

之前尝试取消定义它

键入#include "cv.h"时 它自动应该包括featurs2d。实际上cv.h包括以下内容:

#include "opencv2/core/core_c.h"
#include "opencv2/core/core.hpp"
#include "opencv2/imgproc/imgproc_c.h"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/video/tracking.hpp"
#include "opencv2/features2d/features2d.hpp"
#include "opencv2/flann/flann.hpp"
#include "opencv2/calib3d/calib3d.hpp"
#include "opencv2/objdetect/objdetect.hpp"
#include "opencv2/legacy/compat.hpp"

答案 2 :(得分:0)

你需要OpenCV 2.x风格的C ++ include。见下文

#include "opencv2/features2d/features2d.hpp"
#include "cv.h"
#include "highgui.h"

using namespace cv;
Ptr<FeatureDetector> detect = new SurfFeatureDetector();

答案 3 :(得分:0)

你需要:

#include <opencv2/nonfree/nonfree.hpp>

(从这里:http://answers.opencv.org/question/411/feature-detector-crash/