2014-01-16 2 views
0

저는 C와 OpenCV를 처음 사용하기 때문에 서핑 기술자의 데이터 매트릭스를 얻고 싶습니다.opencv의 서핑 기술자를 행렬로 변환합니다.

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

그때 나는 XML 파일을받을 수 있습니다 cvSave(fileName, objectDescriptors)를 사용하는 경우는, 내 질문에 내가 예를 들어, 45 키포인트가있다, objectDescriptor의 데이터 기술자의 단지 행렬을 얻을 수있는 방법이며, 다음 행렬은 A=matrix[45][64]입니다 ?

어떻게 objectDescriptors에서 직접 A를받을 수 있습니까?

어떻게하면 XML 파일에서 A를 얻을 수 있습니까?

답변

1

OpenCV new 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

안녕하세요, 설명자의 데이터 유형이 '매트'인 것을 확인합니다. 어떻게 배열로 변환 할 수 있습니까? – user3200905

+0

@ user3200905 누구의 유형입니까? '키포인트 '? – herohuyongtao

+0

키포인트의 기술자. '// 컴퓨팅 설명자 SurfDescriptorExtractor 추출기; 매트 설명자 1, 설명자 2; extractor.compute (img1, keypoints1, descriptors1); ' – user3200905