iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python OpenCV超详细讲解透视变换的实现
  • 782
分享到

Python OpenCV超详细讲解透视变换的实现

2024-04-02 19:04:59 782人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录准备工作场景描述透视变换准备工作 右击新建的项目,选择python File,新建一个Python文件,然后在开头import cv2导入cv2库,import numpy并且重

准备工作

右击新建的项目,选择python File,新建一个Python文件,然后在开头import cv2导入cv2库,import numpy并且重命名为np

import cv2
import numpy as np

在这里插入图片描述

我们还要知道在OpenCV中,坐标轴的方向是x轴向右,y轴向下,坐标原点在左上角,比如下面这张长为640像素,宽为480像素的图片。OK,下面开始本节的学习吧。

在这里插入图片描述

场景描述

给定任意一张图像,从中分割出你需要的区域,并且以指定的大小显示出来。而且分割出的图像在线性空间中还是与显示的窗口是平行的。就比如:我想要获取下面的K,原图中K是斜躺着的,分割后显示出来应该是竖直站立的。那么该如何实现这样的效果呢?

在这里插入图片描述

在实现上述效果前,我们需要获取些重要信息,比如说上图中扑克牌K的四个坐标点。我们可以使用画图工具打开这张图片,然后将鼠标放置在分割区域的四个点上,即可获取到坐标信息。

因为画图中图像的宽高坐标轴和OpenCV是一样的,
当我将鼠标放到K左上角时,画图的左下角就显示出来(734像素,185像素),
这就是左上角这个点的坐标。

在这里插入图片描述

透视变换

上面的要求实现看起来比较困难,但是用cv2库,实现起来其实只有9行代码。

  • 首先我们设置下输出图片的宽width为250,高height为350。
  • 然后读取我们的图片,就是上面这张图。
  • 定义目标区域的四个点坐标,分别为:左上、右上、左下、右下。我们在上一步已经获取到了。
  • pst2是输出图片在图片框中的位置,选择平铺即可,固定写法。
  • 使用库函数warpPerspective实现透视变换,感兴趣的可以深入了解下原理。
  • 最后输出并且显示两张图像。
width,height=250,350
img=cv2.imread("Resources/poker.jpg")
pst1=np.float32([[734,185],[1101,266],[621,679],[1030,789]])
pst2=np.float32([[0,0],[width,0],[0,height],[width,height]])
matrix=cv2.getPerspectiveTransfORM(pst1,pst2)
imGoutput=cv2.warpPerspective(img,matrix,(width,height))

cv2.imshow("Image",img)
cv2.imshow("Output",imgOutput)
cv2.waiTKEy(0)

我们来看下效果,左图是我们透视变换的图像,右图是原图像:

在这里插入图片描述

第五节的内容,其实很有趣,在生活中有很多应用。眼过千遍不如手过一遍,快去动手敲一遍吧~

到此这篇关于Python OpenCV超详细讲解透视变换的实现的文章就介绍到这了,更多相关Python OpenCV 透视变换内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python OpenCV超详细讲解透视变换的实现

本文链接: https://www.lsjlt.com/news/144786.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python OpenCV超详细讲解透视变换的实现
    目录准备工作场景描述透视变换准备工作 右击新建的项目,选择Python File,新建一个Python文件,然后在开头import cv2导入cv2库,import numpy并且重...
    99+
    2022-11-13
  • Python OpenCV超详细讲解图像堆叠的实现
    目录准备工作水平堆叠垂直堆叠图像栈堆叠准备工作 右击新建的项目,选择Python File,新建一个Python文件,然后在开头import cv2导入cv2库,import num...
    99+
    2022-11-13
  • Python 数据可视化超详细讲解折线图的实现
    绘制简单的折线图 ✅在使用matplotlib绘制简单的折线图之前首先需要安装matplotlib,直接在pycharm终端pip install matplotlib即可 ✅使用...
    99+
    2022-11-13
  • Python OpenCV超详细讲解读取图像视频和网络摄像头
    准备工作 右击新建的项目,选择Python File,新建一个Python文件,然后在开头import cv2导入cv2库。 读取图像 调用imread()方法获取我们资源文件夹中...
    99+
    2022-11-13
  • Python OpenCV超详细讲解调整大小与图像操作的实现
    目录准备工作重新调整图像大小图像裁剪准备工作 右击新建的项目,选择Python File,新建一个Python文件,然后在开头import cv2导入cv2库。 我们还要知道在Op...
    99+
    2022-11-13
  • C++超详细讲解单链表的实现
    目录单链表的实现(从入门到熟练)概念和结构链表的实现增删查改接口节点结构体创建节点开辟数据打印链表尾插数据头删链表数据查找链表pos位置前插数据链表pos位置后插数据链表pos位置数...
    99+
    2022-11-13
  • MyBatis 超详细讲解动态SQL的实现
    目录情景:概述:SQL元素:<if>:<choose>:<where>:<trim>:<set>:<for...
    99+
    2022-11-13
  • Java超详细讲解接口的实现与用法
    目录1.接口的定义2.接口的实现3.接口的引用4.接口的继承5.利用接口实现多重继承1.接口的定义 接口是一种特殊的抽象类,是Java提供的一个重要的功能,与抽象类不同的是: 接口的...
    99+
    2022-11-13
  • Android超详细讲解弹出多选框的实现
    目录程序代码功能:点击一个按钮弹出一个多选框 在activity_main.xml布局一个button控件,大小,颜色,位置,背景可自行调节,以被用来在MainActivity.ja...
    99+
    2022-11-13
  • Django超详细讲解图书管理系统的实现
    目录1、用户管理模块2、图书管理模块3、数据管理模块4、前端模块项目使用python开发,采用Django框架,数据库采用MySQL,根据用户人员的不同分成两套系统,分别是学生系统和...
    99+
    2022-11-11
  • C语言超详细讲解栈的实现及代码
    目录前言栈的概念栈的结构栈的实现创建栈结构初始化栈销毁栈入栈出栈获取栈顶元素获取栈中有效元素个数检测栈是否为空总代码Stack.h 文件Stack.c 文件Test.c 文件前言 栈...
    99+
    2022-11-13
  • OpenCV和C++实现图像的翻转(镜像)、平移、旋转、仿射与透视变换
    目录一、翻转(镜像)二、仿射扭曲获取变换矩阵仿射扭曲函数 warpAffine旋转平移三、仿射变换四、透视变换综合示例总结官网教程 一、翻转(镜像) 头文件 quick_opencv...
    99+
    2022-11-12
  • C语言超详细讲解队列的实现及代码
    目录前言队列的概念队列的结构队列的应用场景队列的实现创建队列结构队列初始化  队列销毁  入队列  出队列  队列判空  获取队列元...
    99+
    2022-11-13
  • SpringCloudOpenFeign超详细讲解模板化远程通信的实现
    目录1. openFeign实现1.1 pom依赖1.2 yaml配置1.3 客户端调用代码1.4.服务端暴露接口1.5.测试日志1. openFeign实现 基于spring-bo...
    99+
    2022-11-13
  • C语言超详细讲解猜数字游戏的实现
    目录rand函数srand函数时间戳完整代码与程序运行图rand函数 先看一下下面这张图: 通过这张图我们可以了解到rand函数的返回值是int类型,形参为空,它的头文件<s...
    99+
    2022-11-13
  • 超详细讲解Java秒杀项目登陆模块的实现
    目录一、项目前准备1、新建项目2、导入依赖3、执行sql脚本4、配置yml文件5、在启动类加入注解6、自动生成器二、前端构建1、导入layui2、将界面放到template3、在js...
    99+
    2022-11-13
  • 超详细讲解Java秒杀项目用户验证模块的实现
    目录一、用户验证1、在方法内添加请求与反应2、cookie操作的封装3、UserServiceImpl4、跳转界面PathController 二、全局session1、导...
    99+
    2022-11-13
  • C++超详细讲解构造函数与析构函数的用法及实现
    目录写在前面构造函数和析构函数语法作用代码实现两大分类方式三种调用方式括号法显示法隐式转换法正确调用拷贝构造函数正常调用值传递的方式给函数参数传值值传递方式返回局部对象构造函数的调用...
    99+
    2022-11-13
  • C++超详细讲解隐藏私有属性和方法的两种实现方式
    目录例子用抽象类解决问题用Pimpl风格解决问题总结参考在我们编写程序的时候,会将程序模块化,常见的就是用动态链接库的方式,然后导出函数接口或者类。而对于导出类的方式,作为模块的实现...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作