open cv学习之图片矫正

news/2024/12/15 3:12:26/

一,实验原理

图像矫正的原理是透视变换

图像畸变主要有两类:径向畸变和切向畸变。径向畸变通常会导致图像的四个角向外或向内弯曲;切向畸变则是由于相机与图像平面不完全平行引起的。而OpenCV 提供了一个相机标定的工具,能够自动估计畸变系数并进行矫正。通过标定过程,我们可以得到一个相机的内参矩阵和畸变系数,进而使用这些信息来矫正畸变图像。

如下图:

将A',B',C',D',进行变换使其变为A,B,C,D这四个点

就比如下面的实验变换:

二,实验代码

import cv2
import numpy as np# 读取图像文件
img = cv2.imread("6.png")# 设置变换前后对应的四个点坐标
# 变换前的四个点坐标,这些点通常是原图中需要进行透视变换的四个顶点
points1 = np.array([[223, 118], [680, 176], [139, 380], [654, 451]], 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)# 使用透视变换矩阵对原图进行透视变换,并生成结果图img_warp
img_warp = cv2.warpPerspective(img, M, (img.shape[1], img.shape[0]))# 显示原图和结果图
cv2.imshow("img", img)
cv2.imshow('img_warp', img_warp)# 暂停程序运行,等待用户关闭窗口
cv2.waitKey(0)

三,实验现象

总的来说,就是选择原始图像中的四个点,并将这四个点透视变换到新图像的四个角,从而产生透视变换的效果。


http://www.ppmy.cn/news/1555191.html

相关文章

IDEA方法注释模板设置

目录 创建模板 新建模板:命名为* 设置模板内容-IDEA格式模板 设置模板应用场景 设置参数 创建模板 /**Enter这里我们也按照这种习惯来设置IDEA的方法注释:File-->Settings-->Editor-->Live Templates 先新建模板组,然后在模板组中…

深度学习:基于MindSpore的极简风大模型微调

什么是PEFT?What is PEFT? PEFT(Parameter Efficient Fine-Tuning)是一系列让大规模预训练模型高效适应于新任务或新数据集的技术。 PEFT在保持大部分模型权重冻结,只修改或添加一小部份参数。这种方法极大得减少了计算量和存储开销&#x…

HTML技术贴:深入理解与实践

1. 引言 HTML(HyperText Markup Language,超文本标记语言)是构建网页和网上应用的标准标记语言。它定义了网页内容的结构和意义,由一系列元素组成,这些元素告诉浏览器如何展示内容。本技术贴旨在深入探讨HTML的核心技…

9. 高效利用Excel设置归档Tag

高效利用Excel设置归档Tag 1. Excle批量新建/修改归档Tag2. 趋势记录模型批量导入归档Tag(Method1)2. 趋势记录模型批量导入归档Tag(Method2)3. 趋势记录控件1. Excle批量新建/修改归档Tag Fcatory Talk常常需要归档模拟量,对于比较大的项目工程会有成千上万个重要数据需…

动手学深度学习---线性神经网络

一、线性回归 解析解:模型的解可以用一个公式简单的表示,这类解叫做解析解。   超参数:可以调整但不在训练过程中更新的参数称为超参数。调参是选择超参数的过程。超参数通常是我们根据训练迭代结果来调整的。   在无法得到解析解的情况下…

ASP.NET Core 应用程序的启动与配置:Program.cs 文件的全面解析

ASP.NET Core 应用程序的启动与配置:Program.cs 文件的全面解析 Program.cs 是 ASP.NET Core 应用程序的入口点,负责应用程序的启动和配置。以下是 Program.cs 文件中完成的主要工作,按逻辑步骤进行总结: 1. 创建和配置主机环境…

openGauss开源数据库实战二十五

文章目录 任务二十五 openGauss 数据库的物理备份与恢复任务目标实施步骤一、为进行物理备份做准备1.确保数据库工作在归档模式2.创建保存数据库物理备份的目录3.创建保存归档日志备份的目录 二、进行openGauss数据库的物理备份1.备份数据库2.切换WAL3.备份归档日志 三、openGa…

鸿蒙ZRouter动态路由框架—服务路由

前言 源码:https://gitee.com/common-apps/ZRouterOH:https://ohpm.openharmony.cn/#/cn/detail/hzw%2Fzrouter 服务路由主要用于实现模块之间的通信,模块间是相互独立且不直接依赖于彼此。 首先确保路由插件在1.0.9版本及以上 一、添加配置…