透视变换就是将一种坐标系变换成另一种坐标系,简单来说就是将一张”斜的”图片变正
M = cv2.getPerspectiveTransform(crc,dst)

  • 获取透视变化的变换矩阵,需要4个点,即图片的4个点
  • 对于透视变换来说,M是一个3*3的矩阵

cv2.warpPerspective(img,M,(输出尺寸))

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project :Opencv学习
@File :仿真变换之透视变换.py
@IDE :PyCharm
@Author :咋
@Date :2023/1/13 19:05
"""
import cv2
import numpy as np
image = cv2.imread("Handsome.jpg")
image = cv2.resize(image,(640,480))
src = np.float32([[200,100],[500,100],[200,300],[500,300]])
des = np.float32([[0,0],[500,500],[0,500],[500,500]])
M = cv2.getPerspectiveTransform(src,des)
# 进行图像变化
warp_img = cv2.warpPerspective(image,M,dsize = (500,480)) # dsize 是输出图像的大小
cv2.imshow("rotate_img",np.hstack((image,warp_img)))
cv2.waitKey(0)
cv2.destroyAllWindows()

image.png
效果不好,右边都没显示图片,可能是对应点没有选好,代码能跑出来说明API的调用没有问题