2016-11-07 2 views
2

이미지에서 구석 점을 가져와 페인트하려고합니다. 이제 다음 형식의 튜플 목록이 있습니다 : harrisCornerDetector 및 nonMaximumSupression 프로세스에서 수동으로 얻은 (row,column,scale) (스케일은 가우스 피라미드를 사용하고 있기 때문에 스케일입니다). 이 목록은 featuresy1입니다.Python에서 OpenCV cornerSubPix()를 사용하는 방법?

내 코드는 다음과 같다 :

이미지는 3 개 개의 동일한 모양 그레이 스케일 이미지입니다
r,g,b=cv2.split(image) 
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001) 
cv2.cornerSubPix(r, featuresy1, (5,5), (-1,1), criteria) 

. 보시다시피, cornerSubPix 두 번째 매개 변수로이 같은 구조를주고 있어요 : [(x1,y1,scale1),(x2,y2,scale2),...,(xn,yn,scalen)]. 유형, 형식이나 구조가 작동 cornerSubPix()을 할 featuresy1을해야하는지 궁금 이러한 이유로

cv2.cornerSubPix(r, featuresy1, (5,5), (-1,1), criteria) 
TypeError: corners is not a numpy array, neither a scalar 

:

다음과 같은 오류를 던지고있다. 이게 내가 잘못하고있는 유일한 것인가? 이에 대한 많은 문서가 없습니다.

감사합니다.

답변

0

corners은 3 차원이 (n, 1, 2) 인 numpy 배열이어야합니다. 여기서 n은 모서리 수입니다. 또한 float32 유형이어야합니다.

corners.shape 

이를 확인하기 위해

그냥 입력합니다.

corners.dtype 

에서

유형은 float32를 사용하는 확인하십시오.

내게는 너의 모서리처럼 보입니다. featuresy1은 열거 형 배열이어야하는 목록입니다. NumPy와 배열로 먼저 변환 :

featuresy1 = np.array(featuresy1) 

을 OpenCV가 understand example에 쉽게가 당신에게

도움이 될 수도있다
관련 문제