2012-02-03 5 views
6

OpenCV 2.3.1a 기능 추출/설명자 바인딩을 사용하여 이미지 기능/설명자 (STAR ​​/ SURF/ORB/SIFT/빠른). .. 여기에 나와있는 내가 OpenCV의 더 기능 설명은 (내가 정말 필요하다)가 없기 때문에이 내게 도움이되지 않는다 "goodFeaturesToTrack라는 메소드를 가지고 것을 잘 알고 나는 문서를 따랐다 :OpenCV Python 바인딩의 기능 감지

http://opencv.itseez.com/modules/features2d/doc/feature_detection_and_description.html

아무것도 작동하지 않는 것 같습니다. 나는 모든 설명자/기능의 맛을 시도했습니다. 단일 및 다중 채널 이미지 (예 : 색 및 흑백) 및 여러 이미지 형식 (8 비트 및 32f) 사용하려고했습니다. 현재 배포판에서 작업하고 소스 저장소에서 바인딩을 작성합니다. 대부분의 메서드는 "알 수없는 배열이 아닙니다"오류가 발생합니다. 다음은 예입니다 :

SimpleCV:1>import cv2 
SimpleCV:2>img = Image("aerospace.jpg") 
SimpleCV:3>bwimg = img._getGrayscaleBitmap() 
SimpleCV:4>bwimg 
SimpleCV:4><iplimage(nChannels=1 width=600 height=400 widthStep=600)> 
SimpleCV:5>surfer = cv2.SURF(0.5,4,2,False,False) 
SimpleCV:6>points = surfer.detect(bwimg,None) 
--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 

/Library/Python/2.6/site-packages/SimpleCV-1.2-py2.6.egg/SimpleCV/Shell/Shell.pyc in <module>() 
- 

TypeError: <unknown> is not a numpy array 
SimpleCV:7> 

SimpleCV를 사용하여 이미지를로드하지만 _getGrayscaleBitmap() 메서드는 OpenCV에서 사용되는 회색 8 비트 IPL 이미지를 반환합니다. 부작용없이 수백 가지의 다른 OpenCV 메서드와 함께 사용할 때이 방법이 효과적 일 것이라고 확신합니다.

누구든지 나를 가리켜 줄 수 있습니다. 웹에서이 코드 예제. 나는 수십개의 예제들을 빗어 봤지만 아무 것도 발견하지 못했다.

+0

이 티켓을 Willow Garage에 제출해야할만한 가치가 있지만 가능한 빨리 해결책을 찾고 싶습니다. https://code.ros.org/trac/opencv/ticket/1582 – kscottz

답변

10

캣이 나를 위해 작동합니다

s = cv2.SURF() 
mask = uint8(ones(gray.shape)) 
keypoints = s.detect(gray,mask) 

내가 핵심 포인트와 모든 플롯 할 수 있습니다. 설명자를 얻으려면이 방법을 시도해보십시오.

k,d = s.detect(gray,mask,False) 
d = d.reshape((-1,128)) 
print d.shape, len(k) 

d는 키 포인트 목록에서 동일한 길이 여야합니다.

나는 여기에서 OpenCV 장에서이 예제를 가지고 : 당신이 PIL 이미지를 가지고있는 것처럼 http://www.maths.lth.se/matematiklth/personal/solem/book.html

+1

여전히 오류가 발생합니다. 나에게 호의를 베풀고 그레이 이미지의 유형을 말해 줄 수 있니? 그것은 질적 인 배열처럼 보입니다. cvMat 및 IPL 이미지 유형이 작동하지 않습니까? 을 할 수 있도록 회색 = UINT8이 (np.array (cv.GetMat은 (img._getGrayscaleBitmap은())) 트랜스().) 그것은 나에게 하루를 취할 것 또는 : 그것은 작동처럼 – kscottz

+0

는 SimpleCV에서 좋아이 보인다 개념의 증거. – kscottz

+0

예, 그것은 uint8 numpy 배열입니다. cv2 파이썬 바인딩은 약간의 작업이 필요합니다. 대부분의 기능은 아직 구현되지 않은 것 같습니다. –

0

보인다. num35 이미지로 변환 해보십시오. npImage = np.array (img)