使用open—cv进行图片矫正

news/2024/12/17 2:26:58/

实验原理

  1. 找到原图 和目标图的四个点,获取透视变换矩阵
  2. 对图像应用透视变换,实现油画区域的矫正

实验过程

import cv2
import numpy as np# 读取图片文件
img = cv2.imread('./g.png')# 定义源图像中的四个角点
points1 = np.float32([[174,143],[623,37],[90,492],[656,550]
])# 根据源图像角点的最小和最大坐标值,定义目标图像中的四个角点
# 这样做是为了将源图像的角点区域变换到目标图像的对应位置
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)# 应用透视变换到图像上
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)cv2.waitKey(0)

实验结果


http://www.ppmy.cn/news/1555743.html

相关文章

游戏引擎学习第49天

仓库: https://gitee.com/mrxiao_com/2d_game 回顾 我们当时在讨论我们必须要进行一些改进,以便在游戏中实现更好的碰撞检测。当时展示了一种非常基本的形式,以十字路口为例来实现碰撞交叉工作。然后我们意识到需要升级到更复杂的水平,以便…

【uni-app】App与webview双向实时通信

【uni-app】App与webview双向实时通信 在 Uniapp 中,App 与 里面嵌入的 webview 进行双向的实时通信 vue2 , 模拟器 主要分为两部分 webview 向 app 发送信息 app 向 webview 发送信息 以下是实现方式,用一个例子来说明 (文…

用OpenCV给图像加水印,为图像添加个性

一、引言 在数字时代,保护图片的版权和标识越来越重要。无论是企业的Logo,还是个人作品的水印,都可以有效地标记和保护图像内容。本篇博客将介绍如何使用OpenCV为图片添加水印或Logo。我们将通过简单的代码示例,帮助你快速掌握这…

Debezium OracleDefaultValueConverter 分析

Debezium OracleDefaultValueConverter 分析 目录 1. 概述2. 核心功能3. 类型映射4. 特殊处理5. 最佳实践6. 使用示例7. 总结1. 概述 OracleDefaultValueConverter 是 Debezium Oracle 连接器中负责处理列默认值转换的核心类。它主要用于将 Oracle 数据库中的列默认值转换为 …

Linux系统操作03|chmod、vim

上文: Linux系统操作02|基本命令-CSDN博客 目录 六、chmod:给文件设置权限 1、字母法 2、数字法(用的最多) 七、vim:代码编写和文本编辑 1、启动和退出 1️⃣启动 2️⃣退出 2、vim基本操作 六、chmod&#x…

基于单片机和测频法的频率计设计及proteus仿真

摘要: 传感器广泛应用在自动化测量中,该文利用 51 单片机 2 个 16 位定时器和测量频率中的测频法设计了测量方波的频率计,并用LCD1602 液晶显示频率、 proteus 仿真,测试结果表明设计思路正确、误差小。 关键词: 单片机;测频法;频率计; proteus 1 概述 传感器能感受到…

《Vue进阶教程》第七课:computed()函数详解(下)

往期内容: 《Vue零基础入门教程》合集(完结) 《Vue进阶教程》第一课:什么是组合式API 《Vue进阶教程》第二课:为什么提出组合式API 《Vue进阶教程》第三课:Vue响应式原理 《Vue进阶教程》第四课&#…

我在广州学 Mysql 系列之 数据“表”的基本操作

ℹ️大家好,我是😆练小杰,今天主要讲得是Mysql数据表的基本操作内容~~ 昨天讲了“Mysql 数据“库“的基本操作”~~ 想要了解更多🈶️MYSQL 数据库的命令行总结!!! “真相永远只有一个”——工藤…