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)
相关推荐
水如烟2 分钟前
孤能子视角:中西医合璧系列·05 收束篇——同一关系场的四次显影:术法道伦理的完整循环
人工智能
Summer-Bright8 分钟前
消费者 AI 变现竞争:从“一家独大“到“iOS vs Android“,谁在为 AI 买单?
android·人工智能·ios·ai·自然语言处理·agi
前端Baymax9 分钟前
一篇文章讲透Infra:AI数据云计算基础架构分类详解
人工智能
hnsoyon10 分钟前
智慧管廊综合管理平台赋能排水管网监测精细化管理
大数据·人工智能·智慧管廊综合管理平台·排水管网监测
juejin_cn11 分钟前
【翻译】图工程指南(2026)
人工智能
网易云信12 分钟前
网易智企Data Agent实践入选信通院《智能体创新实践案例汇编》
人工智能·后端·线下活动
ksueh20 分钟前
千问Qwen3.8 MAX + Qwen3.7接入蛙趣拼文:2.4万亿参数模型来了,AI写小说体验全面升级
人工智能
大模型码小白26 分钟前
企业级检索增强后端集成:Java 服务如何管理知识库版本
java·服务器·开发语言·人工智能·python·microsoft
数智化管理手记37 分钟前
预算控制手工核对效率低?预算控制数字化落地实操如何做?
大数据·网络·数据库·人工智能·数据挖掘
Xzaveir41 分钟前
企业号码资产平台:逐号状态、事件日志与批次聚合
android·人工智能