2013-10-25 2 views
4

OpenCV (2.4.6.0)를 사용하여 제공된 주요 지점에서 설명자를 검색하려고합니다.SIFT 또는 SURF - 키 포인트를 제공하고 설명자를 검색하십시오.

지금까지, 나는 ... 성공하지 l는 특징점의 배열 인

l, des = surf.detectAndCompute(self.gray,None,useProvidedKeypoints = True) 

. 나는 이미 가지고있는 핵심 포인트를 어디에서 입력해야할지 모르겠다. ...

누구나 내가 SIFT 나 SURF로 이것을 어떻게 할 수 있는지 알 수 있겠는가?

도움 주셔서 감사합니다.

답변

4

이것은 C++에서 키포인트를 입력 할 수 있으므로 detectAndCompute()에 대한 Python 바인딩에 문제가있는 것처럼 보입니다. 다행히도 해결 방법이 있습니다. 키포인트를 이미 감지하여 l에 저장 한 경우 DescriptorExtractor 개체를 만들고 제공된 키포인트에 대한 설명자를 계산할 수 있습니다.

FAST 키포인트하고 계산 SURF 디스크립터를 생성하는 예는 다음과 같다 :

im = cv2.imread(path_to_image) 
fast = cv2.FeatureDetector_create('FAST') 
l = fast.detect(im) 
surf = cv2.DescriptorExtractor_create('SURF') 
l, des = surf.compute(im, l) 

이것은 SIFT 기능에 대해 동일하게 잘 작동한다. 대신 'SIFT'을 인수로 cv2.DescriptorExtractor_create()에 전달하십시오.

+0

안녕하세요,이 솔루션을 시도 할 때 'l'값이 변경된다는 것을 알게되었습니다. 나는'l, des = surf.compute (im, l) '줄 앞뒤에'l'을 인쇄했으며'l'에 새로운 핵심 점이 생성되었음을 알았습니다. 당신의 도움을 주셔서 감사합니다. –

관련 문제