我检测到关键点并提取了特征。
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;
上面的提示结果为“Size:64 Type:5”。我知道尺寸的含义。我不知道5的含义代表描述符提取器的类型。我搜索了它,但找不到与decriptorType()有关的任何内容。
PS:我知道使用SIFT检测器和SURF提取器。使用OpenCV 2.4.10。
提前致谢。
最佳答案
描述符的类型对应于descriptors.type()
(CV_8U
,CV_32F
等)。
描述符类型与描述符的性质有关。例如,SIFT和SURF的类型将为CV_32F
,而ORB的类型将为CV_8U
,因为它是二进制描述符。
它还与用于匹配描述符的规范类型(descriptor_extractor->defaultNorm()
)密切相关:NORM_L2
及其派生给真实描述符,NORM_HAMMING
及其派生给二进制描述符。
关于c++ - 在OpenCV中,DescriptorExtractor类的descriptorType()返回什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37810588/