想象一下,您有一本书中的一页照片。我想创建一个打开图像的程序,并允许您为边界框选择四个点,然后应用透视变换。
我希望能够执行以下操作: image
我不需要轴层,只需选择四个边缘点,然后将其拉伸为均匀的矩形即可。
在此示例中,它似乎几乎完成了我要通过转换实现的目标,只是它没有将透视图扩展为适合所有四个方面。我一直无法找到一种方法来选择照片中每个边缘的四个边界点。
import cv2
import matplotlib.pyplot as plt
import numpy as np
img = cv2.imread('img.jpg')
rows,cols,ch = img.shape
print(img.shape)
pts1 = np.float32([[56,65],[368,52],[28,387],[389,390]],dtype='float32')
pts2 = np.float32([[110,120],[368,52],[14,350],[340,340]],dtype='float32')
M = cv2.getPerspectiveTransform(pts1,pts2)
dst = cv2.warpPerspective(img,M,(300,300),borderMode=cv2.BORDER_CONSTANT,
borderValue=(255, 255, 255))
cv2.imwrite("IMAGE_NAME.png", dst)
plt.subplot(121),plt.imshow(img),plt.title('Input')
plt.subplot(122),plt.imshow(dst),plt.title('Output')
plt.show()