andrw
andrw

Reputation: 820

How to use FeatureDetector in OpenCV C++?

I am using VS 2008 with OpenCV 2.1 installed as per the installation guide. FeatureDetector/SurfFeatureDetector are listed as classes in the documentation, but they are considered "syntax error : identifier 'SurfFeatureDetector"

This is pretty much the entirety of my code.

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

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

I've tried a bunch of random combinations to get this to work. How can I initialize a featuredetector?

Upvotes: 2

Views: 9784

Answers (4)

mpenkov
mpenkov

Reputation: 21932

You need to:

#include <opencv2/nonfree/nonfree.hpp>

(from here: http://answers.opencv.org/question/411/feature-detector-crash/)

Upvotes: 0

DanielHsH
DanielHsH

Reputation: 4453

I think you have installation problem, try resinstalling from here: sourceforge.net/projects/opencvlibrary/files/opencv-win/2.2

anther other option is that your precompiler already has __OPENCV_OLD_CV_H__ defined. Try undefining it before #include "cv.h"

When you type #include "cv.h" It automatically should include featurs2d. in fact cv.h includes the following:

#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"

Upvotes: 1

peakxu
peakxu

Reputation: 6675

You need the OpenCV 2.x style C++ include. See below

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

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

Upvotes: 0

Sean
Sean

Reputation: 3062

You're declaring a pointer to a cv::Ptr -- you really should just have the cv::Ptr. Change your code to

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

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

and it should work.

Upvotes: 3

Related Questions