2017-11-06 19 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

matplotlib을 사용하여 플롯을 만들고 있습니까? 나는 아직도 결과를 얻지 못하고있다. – Coddy

+0

opencv imshow를 사용하여 이미지를 표시합니다. – Silencer

+0

나를 위해 일한 정확한 순서는 tl -> tr -> bl -> br – Coddy