2012年7月27日金曜日

OpenCV 2.4.2でSURFを使うために


2.4からライセンスの関係でSURFやSIFTがnonfreeのライブラリに移動した
使用に当たっては、
#include "opencv2/nonfree/nonfree.hpp"のインクルードと、
#pragma comment(lib,"opencv_nonfree242.lib")のライブラリの指定が必要である。
また、プログラムの起動時に、cv::initModule_nonfree();による初期化が必要になった。


このまじないを唱えずに、

Ptr<FeatureDetector> featureDetector = FeatureDetector::create( "SURF" );
Ptr<DescriptorExtractor> descriptorExtractor = DescriptorExtractor::create( "SURF" );

などを呼んでも、オブジェクトが生成されず、ヌルポになるので注意




ただし、抽象クラスを使用せず明示的なクラスを使用する場合、初期化の宣言なしでも、利用できる

SurfFeatureDetector detector(50);
SurfDescriptorExtractor extractor;

以上

0 件のコメント:

コメントを投稿