OpenCV图片矫正

矫正效果图:

实验原理:

先找到这个不规则四边形的四个顶点的坐标,然后拿一个numpy数组来接收他们,然后再写一个numpy数组记录新生成图的四个顶点,然后写下M透视变换矩阵,可以通过函数cv2.getPerspectiveTransform()计算得到,然后通过透视变换函数cv2.warpPerspective(src, M, dsize, dst=None, flags=cv2.INTER_LINEAR, borderMode=cv2.BORDER_CONSTANT, borderValue=None)得到一张新的图片

cv2.warpPerspective(src, M, dsize, dst=None, flags=cv2.INTER_LINEAR, borderMode=cv2.BORDER_CONSTANT, borderValue=None)

功能:用于对图像进行透视变换的函数

参数:

src: 输入图像,即你想要进行透视变换的源图像。

M: 透视变换矩阵,通常是一个 3x3 的矩阵,可以通过 cv2.getPerspectiveTransform() 函数计算得到。这个矩阵定义了源图像中的点如何映射到目标图像中的点。

dsize: 输出图像的尺寸,以 (width, height) 的形式表示。这是变换后图像的尺寸。

dst: 输出图像,这是一个可选参数。

flags: 插值方法。

borderMode: 边界填充方法。

borderValue: 边界颜色【可选】。

python 复制代码
import cv2
import numpy as np

img=cv2.imread('./pic.png')
# 2、 获取透视变换矩阵
# 目标图中的四个点
points1=np.float32([[175,143],[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_Perspective=cv2.warpPerspective(img,M,(img.shape[1],img.shape[0]))
cv2.imshow('image',img)
cv2.imshow('image_Perspective',img_Perspective)
cv2.waitKey(0)
相关推荐
Ai-_Man1 小时前
您您这可以把Microsofat Copilot的多个会话比如说。左侧的多个会话一次性导出吗?不是单条会话里面的多次会对话。AI导出鸭
javascript·人工智能·ai·小程序·电脑·copilot
2601_965969061 小时前
教师考完AI证书后,应该完成哪些教学项目?
人工智能
代码方舟2 小时前
零信任架构实战:基于天远运营商三要素简版V即时版查询构建自动化电子投保实名核验网关
大数据·人工智能·架构·自动化
JavaPub-rodert2 小时前
AI Agent 怎么接上长期记忆?从 Graphiti MCP Server 讲透 MCP、Episode、搜索与记忆工具化
人工智能
大模型任我行2 小时前
Meta:强化学习权重传输不再卡顿
人工智能·语言模型·自然语言处理·论文笔记
sugarzhangnotes3 小时前
【无标题】
开发语言·人工智能·python
盼小辉丶3 小时前
PyTorch强化学习实战(27)——进化策略在强化学习中的应用
人工智能·pytorch·深度学习·强化学习
东离与糖宝3 小时前
Agent长期记忆六大方案对比,彻底解决AI失忆问题
人工智能
小小测试开发3 小时前
Prompt评估:加一句「请一步步思考」,结构化输出的解析失败率从 2% 涨到 17%
人工智能·prompt
xiaohaiAIgeo3 小时前
【2026年】实验室应急预案中通风系统的关键作用
大数据·人工智能·科普知识