我检测到关键点并提取了特征。

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_8UCV_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/

10-12 21:42