OpenCV中的图片矫正

一、实验原理

基于计算机视觉中的透视变换(Perspective Transformation),也称为单应性(Homography)。透视变换是一种几何变换,用于将图像从一个平面映射到另一个平面,同时保持直线的直线性。这种变换在图像处理中非常有用,尤其是在图像校正、图像拼接、图像增强等领域。

二、实验代码

复制代码
# 导入OpenCV和NumPy库
import cv2
import numpy as np

# 读取图片文件
img = cv2.imread('./youhua.png')

# 定义四个点,这些点是图片中需要被变换的区域的四个角点
points1 = np.float32([
    [174,143],  # 左上角点
    [623,37],   # 右上角点
    [90,492],   # 左下角点
    [656,550]   # 右下角点
])

# 计算包围points1的最小外接矩形的四个角点
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])]   # 右下角点
])

# 使用getPerspectiveTransform函数计算透视变换矩阵M
M = cv2.getPerspectiveTransform(points1, points2)

# 使用warpPerspective函数对图片进行透视变换
dst = cv2.warpPerspective(img, M, (img.shape[1], img.shape[0]))

# 计算变换后图片的最小外接矩形的坐标
min_x, min_y = points2.min(axis=0).astype(int)
max_x, max_y = points2.max(axis=0).astype(int)

# 根据最小外接矩形的坐标裁剪变换后的图片
cropped_dst = dst[min_y:max_y, min_x:max_x]

# 显示原始图片
cv2.imshow('img', img)

# 显示裁剪后的变换图片
cv2.imshow('cropped_dst', cropped_dst)

# 等待按键,0表示无限等待直到有按键按下
cv2.waitKey(0)

三、实验现象

相关推荐
云边云科技_云网融合1 分钟前
连锁门店如何用AI降本增效?云边云科技 “AI +零售”沙龙探门店智能运营新范式
人工智能·科技·零售
倔强的石头1063 分钟前
【机器学习】损失函数全解_从MSE到交叉熵
人工智能·机器学习
研华科技Advantech6 分钟前
Windows Server IoT 2025深度技术解析:功能、安全与AI性能突破
人工智能·物联网·安全
AndrewHZ10 分钟前
图像处理入门009 | OpenCV 图像读取与显示:imread/imshow 全解析
图像处理·python·opencv·算法·计算机视觉·图像显示
pingao14137811 分钟前
金属翻斗式雨量筒 承雨口径200mm 高精度雨量监测仪
大数据·人工智能·科技
珐恩AI-人工智能16 分钟前
大模型隐性权重衰减机制剖析:详解GEO长效维稳如何避免优质
大数据·人工智能·深度学习·机器学习·geo优化
通问AI18 分钟前
人形机器人从实验室到量产:宇树科技IPO背后的技术逻辑
人工智能·科技·机器人
Eloudy21 分钟前
GXF 3.2.0 to 4.0 CUDA 12 路径 API 与数据结构增量分析
人工智能
雷焰财经30 分钟前
中国经济进入“科技驱动”新阶段:出口、高技术产业与内需如何形成合力
人工智能·科技
学技术的大胜嗷34 分钟前
PatchCore:论文和工程代码细节详细解读
目标检测·计算机视觉·视觉检测