2014-01-16 49 views
0

我是C和OpenCV的新手,我想获取冲浪描述符的数据矩阵。将opencv的冲浪描述符转换为矩阵

double tt = (double)cvGetTickCount(); 
cvExtractSURF(object, 0, &objectKeypoints, &objectDescriptors, storage, params); 
printf("Object Descriptors: %d\n", objectDescriptors->total); 

如果我使用cvSave(fileName, objectDescriptors)话,我可以得到的XML文件,我的问题是怎样才能得到objectDescriptor的数据描述的只是基体,例如,有45个关键点,则矩阵是A=matrix[45][64]

如何从objectDescriptors直接获得A?

如何从xml文件中获得A?

回答

1

您可以使用OpenCV新API SurfFeatureDetector。它将直接将关键点保存到vector<KeyPoint>

int minHessian = 400; 
SurfFeatureDetector detector(minHessian); 
std::vector<KeyPoint> keypoints; 
detector.detect(img, keypoints); 

结账cv::KeyPoint Class Reference

查看[1][2]的实例。

+0

嗨,我看到描述符的数据类型是'Mat',我该如何将它转换为数组? – user3200905

+0

@ user3200905谁的类型? 'keypoints'? – herohuyongtao

+0

关键点的描述符。 '//计算描述符 SurfDescriptorExtractor提取器; Mat描述符1,描述符2; extractor.compute(img1,keypoints1,descriptors1);' – user3200905