2012-03-21 11 views
12

opencvのpython2ラッパーに "getPerspectiveTransform"と何かがあるようです。まず、期待される3つの引数の代わりに2つの引数が必要です。はopenCv python2ラッパーでgetPerspectiveTransformが壊れていますか?

だからではなく、最初のラッパーさんの:

cv.GetPerspectiveTransform(source,destination,3x3mat) 

それは今です:

cv2.getPerspectiveTransform(?,?) 

私は4つのクワッドヴェールの二組に入れしようとするので、同様の引数として座標:

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 

チェックベクタが4(4角形の四角形)にならない場合、私はそれが私に何を望んでいるのかはわかりません。 python2ラッパーの他のすべてと同じように、この機能は完全に文書化されていないので、壊れているかどうかわかりません。ここにいる誰もがこれを正常に動作させることができましたか?

答えて

20

cv2.getPerspectiveTransformはとにかく壊れていません。

あなたのポイントの長さが4でないか、浮動小数点数ではない可能性があります。

は、次の試してみてください。

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

関連する問題