Python,CV2,PIL:在图像中选择一个柔性矩形以进行透视变换

时间:2018-09-07 03:35:02

标签: python numpy matplotlib opencv-python

想象一下,您有一本书中的一页照片。我想创建一个打开图像的程序,并允许您为边界框选择四个点,然后应用透视变换。

我希望能够执行以下操作: 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()

0 个答案:

没有答案