我正在按照安装指南使用安装了OpenCV 2.1的VS 2008。 FeatureDetector / SurfFeatureDetector在文档中列为类,但它们被视为“语法错误:标识符'SurfFeatureDetector”
这几乎就是我的全部代码。
#include "cv.h"
#include "highgui.h"
Ptr<FeatureDetector> *detect = new SurfFeatureDetector();
我尝试了一系列随机组合来实现这一点。如何初始化featuredetector?
答案 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/)