2011-07-01 3 views
2

インストールガイドに従ってOpenCV 2.1をインストールしたVS 2008を使用しています。 FeatureDetector/SurfFeatureDetectorはドキュメントのクラスとしてリストされていますが、「構文エラー:識別子「SurfFeatureDetector」とみなされます。OpenCV C++でFeatureDetectorを使用するには?

これは私のコードのほぼ全体です。

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

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

これを動作させるために、さまざまな組み合わせを試しました。私はどのようにしてフィーチャー検出器を初期化できますか?

+0

それはポインタのどのような? – karlphillip

+0

ack編集されました。 FeatureDetector型である必要があります – Andrw

+1

Ptrは使用終了時に自身を削除するopencv auto pointerです – DanielHsH

答えて

1

の下を参照してください私はここからresinstallingしてみてください、あなたはインストールの問題を抱えていると思う: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" 
3

あなたはcv :: Ptrへのポインタを宣言しています。実際にはcv :: Ptrを持つべきです。コードを

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

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

に変更してください。

+0

+1します。あなたは私にそれを打つ。 – karlphillip

+0

まだコンパイルできませんが、それでもまだFeatureDetectorを見つけることができません。 OpenCV2.1のインストールで見つけられないfeature2d.hppに誰かが言いました、それが問題の原因になるのでしょうか? – Andrw

+0

コードのどこかに 'using namespace cv;'がありますか?それを含めるか、 'cv'名前空間を手動で宣言する必要があります。私は以前にこれらのクラスを使用していましたが、 "features2d.hpp"を含める必要はありませんでした。しかし、私の古いコードのいくつかを見て、必要なかもしれない '#include 'を実行しました。 – Sean

0

OpenCV 2.xスタイルのC++インクルードが必要です。

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

using namespace cv; 
Ptr<FeatureDetector> detect = new SurfFeatureDetector(); 
関連する問題