2017-11-06 6 views
-1

私はドキュメントからの透視変換の例を試していますが、私はその例とは異なる結果になっています。OpenCV 3:openCV 3.3.1のパースペクティブ変換の問題点は何ですか?

import cv2 
import matplotlib.pyplot as plt 
import numpy as np 
img = cv2.imread('sudoku.png') 
rows,cols,ch = img.shape 
pts1 = np.float32([[56,65],[368,52],[28,387],[389,390]]) 
pts2 = np.float32([[0,0],[300,0],[0,300],[300,300]]) 
M = cv2.getPerspectiveTransform(pts1,pts2) 
dst = cv2.warpPerspective(img,M,(300,300)) 
plt.subplot(121),plt.imshow(img),plt.title('Input') 
plt.subplot(122),plt.imshow(dst),plt.title('Output') 
plt.show() 

結果を例によれば、私はここで何が起こっているか

任意のアイデア

のようなルックスを得たものに対し、 enter image description here

を(緑色の線を無視する) のようになります。 ?私はMacOS 10.13、openCV 3.3.1、Python 3.6を使用しています。

+0

入力画像のサイズは何ですか?どのようにpts1ポイントを選んだのですか? – Miki

+0

これはすべてドキュメントの例で示されています。 – Coddy

+0

x軸、y軸から、緑色のクロスで表示されているイメージよりも大きなイメージが表示されていることをはっきりと確認することができます...少しでも努力してください... – Miki

答えて

1

あなたは間違った指先を持っています。

## sudo.png (563, 558, 3) 

## tl->tr->br->bl 
pts1 = np.float32([[76,85],[490,70],[520,520],[35,512]]) 
pts2 = np.float32([[0,0],[300,0],[300,300], [0,300]]) 

enter image description here

+0

plotにmatplotlibを使用していますか?私はまだ結果を得ていません。 – Coddy

+0

opencv imshowを使ってイメージを表示します。 – Silencer

+0

私のために働いた正しい順序はtl - > tr - > bl - > br – Coddy