<p>你的X,Y坐标颠倒了。Python/OpenCV要求将它们列为X,Y(即使您将它们定义为numpy值)。必须为getPerspectiveTransform指定的数组必须将它们列为X,Y</p>
<p>输入:</p>
<p><a href="https://i.stack.imgur.com/IJVMR.jpg" rel="noreferrer"><img src="https://i.stack.imgur.com/IJVMR.jpg" alt="enter image description here"/></a></p>
<pre><code>import numpy as np
import cv2
# read input
img = cv2.imread("sudoku.jpg")
# specify desired output size
width = 350
height = 350
# specify conjugate x,y coordinates (not y,x)
input = np.float32([[62,71], [418,59], [442,443], [29,438]])
output = np.float32([[0,0], [width-1,0], [width-1,height-1], [0,height-1]])
# compute perspective matrix
matrix = cv2.getPerspectiveTransform(input,output)
print(matrix.shape)
print(matrix)
# do perspective transformation setting area outside input to black
imgOutput = cv2.warpPerspective(img, matrix, (width,height), cv2.INTER_LINEAR, borderMode=cv2.BORDER_CONSTANT, borderValue=(0,0,0))
print(imgOutput.shape)
# save the warped output
cv2.imwrite("sudoku_warped.jpg", imgOutput)
# show the result
cv2.imshow("result", imgOutput)
cv2.waitKey(0)
cv2.destroyAllWindows()
</code></pre>
<br/>
<p>结果:</p>
<p><a href="https://i.stack.imgur.com/ZO0jf.jpg" rel="noreferrer"><img src="https://i.stack.imgur.com/ZO0jf.jpg" alt="enter image description here"/></a></p>