2016-04-12 3 views
1

私はこの小さなプログラムを書いて、2つの画像上で4点を選択することができます。xとyの座標を持つ点の遠近法変換を行うには

これらのポイントを使用して変換行列を取得します。その後、私は画像の1つの点を選択し、その点が他の画像のどこにあるのかを視覚化したいと考えています。

私のポイントは次のようにマークされています - >(x,y) - タプルです。イメージ上でこの「位置」をどのようにフォーマットして、それを変換することができるか

私はdocumentation for perspectiveTransform() methodを見て、私は次のような形状で、それを格納する必要があることを考え出しています

numpy.array([ 
     [self.points[self.length-1][0]], 
     [self.points[self.length-1][1]] 
     ], dtype="float32") 

シングルでこのフォーマットに私をクリックして与えることになる:このフォーマットは」doesnの

Point= [[ 2300.] 
     [ 634.]] 

を私はこの変換行列を使用します:

M = [[ -1.71913123e+00 -4.76850572e+00 5.27968944e+03] 
    [ 2.07693562e-01 -1.09738424e+01 6.35222770e+03] 
    [ 1.02865125e-04 -4.80067600e-03 1.00000000e+00]] 

thod(以下のエラーが表示されます):

cv2.perspectiveTransform(src, M) 
OpenCV Error: Assertion failed (scn + 1 == m.cols) in cv::perspectiveTransform, file C:\builds\master_PackSlaveAddon-win64-vc12-static\opencv\modules\core\src\matmul.cpp 

アドバイスやヒントをお待ちしています。

答えて

2

私は答えを見つけました。

pts = numpy.array([[x,y]], dtype = "float32") 

そして既存の変数pts上の別のnumpy.arrayを呼び出します:キーは、このようにあなたのポイントを置くことです。このlink

にそれを見つけた

pts = numpy.array([pts]) 

手続きれますこの後も同じです。

関連する問題