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)
相关推荐
莫非王土也非王臣1 小时前
迁移学习详情介绍
人工智能·机器学习·迁移学习
AI即插即用1 小时前
即插即用系列 | CVPR 2025 MK-UNet: 多核深度可分离卷积,重新定义轻量级医学图像分割
图像处理·人工智能·深度学习·神经网络·计算机视觉·视觉检测
汽车仪器仪表相关领域1 小时前
全程高温伴热,NOx瞬态精准捕捉:MEXA-1170HCLD加热型NOx测定装置项目实战全解
大数据·服务器·网络·人工智能·功能测试·单元测试·可用性测试
发光的叮当猫1 小时前
什么是梯度
人工智能·深度学习
Struart_R1 小时前
VideoLLM相关论文(二)
计算机视觉·大语言模型·强化学习·多模态·r1
淡忘旧梦1 小时前
词错误率/WER算法讲解
人工智能·笔记·python·深度学习·算法
2501_936146041 小时前
柿子目标检测实战:YOLO11-HSFPN网络优化与性能分析
人工智能·目标检测·计算机视觉
程途拾光1581 小时前
AI从工具向自主决策者的身份
人工智能
_codemonster2 小时前
手语识别及翻译项目实战系列(一)环境准备
人工智能·python·计算机视觉
AAD555888992 小时前
【YOLO13项目实战】(5)镰刀目标检测与识别_C3k2_MBRConv3改进版
人工智能·目标检测·计算机视觉