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)
相关推荐
GOWIN革文品牌咨询几秒前
AI入口下的B2B品牌升级:从内容堆积到标准答案位的重构方法
人工智能·重构·智能设备·工业软件·b2b品牌策划·b2b品牌设计
Shining0596几秒前
推理引擎系列(七)《InfiniLM》
人工智能·深度学习·算法·大模型·ai芯片·智能体·推理引擎
晨非辰1 分钟前
Linux终端输出哲学:从回车换行到进度条实战,掌握缓冲区刷新与ANSI控制,告别输出延迟焦虑
linux·运维·服务器·c++·人工智能·后端·自动化
赵孝正1 分钟前
Python分块计算(Chunk Processing)详解:解决大规模数据内存溢出的工程实践
数据库·人工智能·python
lpfasd1232 分钟前
2026年第12周GitHub趋势周报:Claude生态爆发,AI工程化加速,开发者工具链重构
人工智能·重构·github
无巧不成书02183 分钟前
【开源AI视频笔记工具】BiliNote部署教程:本地+Docker双方案,小白也能轻松上手!
人工智能·开源·音视频·bilinote部署教程·cookie获取
同元软控7 分钟前
同元“AI工程七步法”实践:把桌面CAD搬到Web
前端·人工智能
Dfreedom.10 分钟前
集成学习完全解析:从核心思想到常见误区
人工智能·机器学习·集成学习
杜子不疼.11 分钟前
Linux 部署 RocketMQ 实操:从内网到公网,搞定远程消息服务
linux·运维·人工智能·rocketmq
新缸中之脑12 分钟前
NotebookLM:最佳学习工具
人工智能·学习·chatgpt