您的位置:首页 > 文旅 > 美景 > 企业管理软件的价格_重庆市建设特种信息_免费网站建设制作_平台推广策略都有哪些

企业管理软件的价格_重庆市建设特种信息_免费网站建设制作_平台推广策略都有哪些

2024/12/22 0:12:37 来源:https://blog.csdn.net/2403_88522504/article/details/144435763  浏览:    关键词:企业管理软件的价格_重庆市建设特种信息_免费网站建设制作_平台推广策略都有哪些
企业管理软件的价格_重庆市建设特种信息_免费网站建设制作_平台推广策略都有哪些

一、实验原理

图片矫正实验的核心是 透视变换(Perspective Transformation)。透视变换是一种几何变换,它根据两个坐标点集之间的映射关系,改变图像的透视效果,用于矫正图像中存在的透视畸变或视角不正的问题。在现实世界中,我们观察到的物体在视觉上会受到透视效果的影响,即远处的物体看起来会比近处的物体小。透视投影是指将三维空间中的物体投影到二维平面上的过程,这个过程会导致物体在图像中出现形变和透视畸变。

透视变化示意图

1、关键点说明:

①输入点集(points1):

原始图像上选择的四个角点,代表需要变换的区域。

选择4个角点坐标

②输出点集(points2):

变换后的目标矩形区域的四个角点。

变换后的目标矩形区域的四个角点

2、矩阵计算:

利用 cv2.getPerspectiveTransform 函数通过输入点集和输出点集计算透视变换矩阵 M。

getPerspectiveTransform()函数生成的该3*3的透视变换矩阵

3、透视变换:

使用透视变换矩阵 M,通过 cv2.warpPerspective 实现图像矫正。
该过程相当于将原图像的一个倾斜区域调整为正视角的矩形区域。

透视变换的案例1

 

透视变换的案例2

二、实验代码

以下代码实现了透视变换的基本流程:

import cv2
import numpy as np# 1. 读取一张图片
img = cv2.imread("./card.png")# 2. 获取透视变换矩阵
# 原图中的四个点(需要手动确定需要变换的区域)
points1 = np.array([[200, 100], [700, 150], [140, 400], [650, 460]], dtype=np.float32)
# 目标图中的四个点(变换后的矩形区域)
points2 = np.array([[0, 0], [img.shape[1], 0], [0, img.shape[0]], [img.shape[1], img.shape[0]]], dtype=np.float32)# 计算透视变换矩阵
M = cv2.getPerspectiveTransform(points1, points2)# 3. 透视变换
# 使用变换矩阵对图像进行透视变换
img_warp = cv2.warpPerspective(img, M, (img.shape[1], img.shape[0]))# 4. 显示原图和变换后的图像
cv2.imshow('Original Image', img)
cv2.imshow('Warped Image', img_warp)cv2.waitKey(0)
cv2.destroyAllWindows()

三、实验现象

1、原始图像:

原图中选择了四个点(points1),这些点标定了需要校正的区域,通常可能是倾斜的或变形的视角区域。

2、矫正后的图像:

通过 cv2.warpPerspective 将选择的区域拉伸成一个矩形区域,视觉效果上变得规整、正视。
如果输入点集和输出点集选取正确,矫正后的图像应该完美对齐目标矩形框。

3、实验意义:

该实验是实际应用中图片校正的基础,例如:

①文档扫描:

矫正拍摄的文档图像,使其正视并清晰。

②图像分析:

用于矫正因拍摄角度导致的畸变,便于后续处理。

③目标检测:

在变形场景中提取正确的几何特征。
通过此实验,您将能够掌握图像透视变换的核心技术,并理解其在图像校正领域的实际应用。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com