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)

三、实验现象

相关推荐
不知名网友小H2 分钟前
【h5py】 提取mat文件中的HDF5格式的数据
人工智能·python
OKCC_kelaile52033 分钟前
电销机器人为什么越来越受欢迎?
服务器·网络·人工智能·安全·机器人·语音识别
lshzdq35 分钟前
【机器人】控制之稳定性判定: 李雅普诺夫Lyapunov (3) 李函数设计举例
人工智能·算法·机器人
十年一梦实验室41 分钟前
【机器人】 SDK 与控制器
人工智能·机器人
weixi_kelaile5201 小时前
智能语音机器人代替人工电销能不能促进成单率
java·服务器·人工智能·机器人·语音识别
小张Tt2 小时前
基于python快速部署属于你自己的页面智能助手
人工智能·python
AI大模型_学习君2 小时前
{结对编程/大模型} 实践营项目案例 | 基于RAG搭建政策问答智能聊天助手
人工智能·深度学习·大模型·easyui·rag·结对编程·大模型应用
黑贝是条狗2 小时前
在线图像生成和模型分享平台——Shakker AI
人工智能
xinxin88222 小时前
恢复删除的文件:6个免费Windows电脑数据恢复软件
人工智能·windows·智能手机·pdf·电脑·笔记本电脑·开源软件
计算机科研之友(Friend)2 小时前
【计算机视觉】数据集合集!
人工智能·深度学习·计算机视觉·人机交互·无人机