2016-06-14 9 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과는 ": 64 5 형 크기"를 제공합니다. 나는 크기의 의미를 안다. 그 5의 의미가 디스크립터 추출기의 유형을 의미하는지 궁금합니다. 검색했지만 decriptorType()과 관련된 내용을 찾을 수 없습니다.

추신 : 나는 SIFT 검출기와 SURF 추출기를 사용하고 있음을 알고 있습니다. OpenCV 사용 2.4.10.

미리 감사드립니다.

답변

0

설명자의 유형은 descriptors.type() (CV_8U, CV_32F 등)에 해당합니다.

설명자 유형은 설명자의 특성과 관련이 있습니다. 예를 들어, SIFT W SURF의 유형은 CV_32F이고 ORB 유형은 2 진 설명 자이 G로 CV_8U입니다. NORM_L2과 실제 디스크립터 NORM_HAMMING 및 이진 디스크립터 유래 대해 유도 :

은 또한 밀접하게 일치 디스크립터 (descriptor_extractor->defaultNorm())에 사용하는 표준의 유형에 관한 것이다.

+0

방금이 코드를 보았고 ORB 탐지기와 설명자가 사용되었지만 코드는 다음과 같습니다.
private final Mat mReferenceCorners = new Mat (4,1, CvType.CV_32FC2); 개인 최종 매트 mCandidateSceneCorners = 새 Mat (4,1, CvType.CV_32FC2); 개인 최종 매트 mSceneCorners = 새 Mat (4, 1, CvType.CV_32FC2); 개인 최종 MatOfPoint mIntSceneCorners = 새로운 MatOfPoint(); 이 샘플 코드가 맞습니까? 알려주세요. – John