实验原理
图像透视变换是一种几何变换,它能够将图像中的点从一个平面映射到另一个平面,通常用于校正图像中的透视失真或者创建特殊的视觉效果。在计算机视觉和图像处理中,透视变换可以通过找到一组对应点(原图中的点和目标图中的点)并计算透视变换矩阵来实现。
透视变换的关键步骤:
- 选择对应点:在原图和目标图中选择四个对应点,这些点通常是图像中的角点或者具有明显特征的点。
- 计算透视变换矩阵:使用OpenCV库中的
cv2.getPerspectiveTransform
函数,根据选定的对应点计算透视变换矩阵。 - 应用透视变换:使用
cv2.warpPerspective
函数,将透视变换矩阵应用到原图上,得到变换后的图像。
实验代码
以下是实现图像透视变换的Python代码,使用了OpenCV和Numpy库。
import cv2
import numpy as np
#导入图片
img = cv2.imread('./youhua.png')
#取出四个顶点的坐标
points1 = np.float32([[175,142],[621,35],[89,491],[652,546]])
#确定好对应的坐标,也就是目标图中的四个点
points2 = np.float32([[min(points1[:,0]),min(points1[:,1])], #左上角
[max(points1[:,0]),min(points1[:,1])], #右上角
[min(points1[:, 0]), max(points1[:, 1])], # 左下角
[max(points1[:, 0]), max(points1[:, 1])]] #右下角
)
#生成变换矩阵
M = cv2.getPerspectiveTransform(points1,points2)
#透视变换
img_PerspectiveTransform = cv2.warpPerspective(img,M,(img.shape[1],img.shape[0]))
cv2.imshow('img',img)
cv2.imshow('img_PerspectiveTransform',img_PerspectiveTransform)
cv2.waitKey(0)
实验结果:
原图:
透视变换后:
标签:校正,img,变换,points1,图像,cv2,OpenCV,透视,Numpy From: https://blog.csdn.net/mi_shu_zi/article/details/144433645