2016-06-14 1 views
0

キーポイントを検出して特徴を抽出しました。OpenCVでは、DescriptorExtractorクラスのdescriptorType()は何を返しますか?

vector<vector<KeyPoint> > key_points; 
SiftFeatureDetector feature_detector; 
feature_detector.detect(db_images_gray, key_points); 

Ptr<DescriptorExtractor> descriptor_extractor = DescriptorExtractor::create("SURF"); 
descriptor_extractor->compute(db_images_gray, key_points, descriptors); 

cout << "Size: " << descriptor_extractor->descriptorSize() << " Type: " << descriptor_extractor->descriptorType() << endl; 

上記COUTは "サイズ:5:64タイプ" を与える結果としてを。私はサイズの意味を知っています。 5の意味は、ディスクリプタ・エクストラクタのタイプを表しているのでしょうか。私はそれを検索しますが、decriptorType()に関連するものは何も見つかりませんでした。

PS:SIFT検出器とSURF抽出器を使用しています。 OpenCVを使用して2.4.10。

ありがとうございます。

答えて

0

descriptors.type()CV_8U,CV_32Fなど)に対応します。

ディスクリプタタイプは、ディスクリプタの性質に関連しています。たとえば、SIFTおよびSURFのタイプはCV_32Fになりますが、ORBのタイプはバイナリ・ディスクリプタであるためCV_8Uになります。

また密接に一致する記述子(descriptor_extractor->defaultNorm())に使用するノルムの種類に関連している:NORM_L2、その実際の記述子とNORM_HAMMINGについて導出し、そのバイナリ記述子の派生。

+0

私はちょうどこのコードに遭遇し、ORB検出器とディスクリプタが使用されているがコードは以下の通りです
プライベート最終マットmReferenceCorners = 新しいMat(4,1、CvType.CV_32FC2); プライベート最終マットmCandidateSceneCorners = 新しいMat(4,1、CvType.CV_32FC2); プライベート最終マットmSceneCorners =新しいMat(4,1、CvType.CV_32FC2); プライベートfinal MatOfPoint mIntSceneCorners =新しいMatOfPoint(); このサンプルコードは正しいですか?私にお知らせください – John

関連する問題