定义
- cv2.warpPerspective(img,matric,size)
- cv2.getPerspectiveTransform(pts1,pts2)
用法
对于透视变换,需要一个3*3的变换矩阵,在变换前后直线还是直线。需要在原图上找到4个点以及
他们在输出图上对应的位置。注意,这四个点任意三个都不能共线,变换矩阵可由opencv提供的
cv2.getPerspectiveTransform()函数构建,然后传给函数cv2.warpPerspective()
函数作用 | 透视变换 |
img | 输入图像 |
matrix | 变换矩阵,可由cv2.getPerspectiveTransform()获得 |
size | 输出图像的大小,格式为(宽(列),高(行)) |
函数作用 | 构建变换矩阵 |
pts1 | 原图像四个点的坐标 |
pts2 | 原图像四个点在变换后相应的坐标 |
示例
import cv2
import numpy as np
from matplotlib import pyplot as plt
img=cv2.imread('D:/2.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()