2012-03-21 1 views
12

opencv 용 python2 래퍼에 "getPerspectiveTransform"이있는 것으로 보이는 것이 있습니다. 우선, 예상되는 3 개의 인수 대신에 두 개의 인수가 필요합니다.은 openCv python2 래퍼에서 getPerspectiveTransform을 깨뜨린 것입니까?

cv.GetPerspectiveTransform(source,destination,3x3mat) 

그것은 이제 :

:

cv2.getPerspectiveTransform(?,?) 

나는 네 개의 쿼드 버트의 두 세트에 넣어하려고하면 이렇게 같은 인수로 좌표 그래서 그 대신 첫 번째 래퍼의가의

cv2.getPerspectiveTransform(first_set_of_corners, second_set_of_corners) 

다음 오류가 발생합니다.

cv2.error: C:\slave\WinInstallerMegaPack\src\opencv\modules\imgproc\src\imgwarp. 
cpp:3194: error: (-215) src.checkVector(2, CV_32F) == 4 && dst.checkVector(2, CV 
_32F) == 4 

checkVectors가 네 개 (4 각형의 "쿼드")가되어서는 안되면 나에게 원하는 것이 무엇인지 확신 할 수 없습니다. 파이썬 2 래퍼의 다른 모든 것들과 마찬가지로이 기능은 완전히 문서화되어 있지 않으므로 파손되었거나 잘못되었을 가능성이 있는지 알 수 없습니다. 여기 누군가가 제대로 작동하도록 관리 했습니까?

답변

20

cv2.getPerspectiveTransform이 어쨌든 손상되지 않았습니다.

포인트의 길이가 4가 아니거나 float32 수가 아닐 수도 있습니다. 다음

시도 :

import cv2 
import numpy as np 

img = cv2.imread('1original.jpg',0) 

src = np.array([[50,50],[450,450],[70,420],[420,70]],np.float32) 
dst = np.array([[0,0],[299,299],[0,299],[299,0]],np.float32) 

ret = cv2.getPerspectiveTransform(src,dst) 
print ret 

결과는 다음과 같습니다

[[ 8.36097696e-01 -4.51944700e-02 -3.95451613e+01] 
[ -4.51944700e-02 8.36097696e-01 -3.95451613e+01] 
[ 6.45161290e-05 6.45161290e-05 1.00000000e+00]] 
+0

그래. 후자는 내 문제였다. 고맙습니다! – Snesticle

+1

그래, 나는 다른 오류에서 여기서 상처를 입혔다. float32를 원한다는 것을 쉽게 알 수 있습니까? docstring 또는 OpenCV 매뉴얼 페이지에는 cv2.getPerspectiveTransform에 대한 float32 숫자가 필요하다고 언급되어 있지 않습니다. –

+1

@darkgreen - 오류 메시지의 확인은'CV_32F'를위한 것입니다; 신빙성이 있지만, 한번 보게되면 이해가됩니다. – sapi

관련 문제