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

作者:振华OPPO 时间:2021-08-02 21:19:48 

准备工作

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

import cv2
import numpy as np

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

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

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

场景描述

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

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

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

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

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

透视变换

上面的要求实现看起来比较困难,但是用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超详细讲解透视变换的实现

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

来源:https://blog.csdn.net/qq_42257666/article/details/122920896

标签:Python OpenCV,透视变换
0
投稿

猜你喜欢

  • IE 8 提出“超级标准模式”

    2008-01-24 19:26:00
  • MySQL缓存的查询和清除命令使用详解

    2024-01-27 21:23:13
  • JavaScript中函数表达式和函数声明及函数声明与函数表达式的不同

    2024-04-19 10:02:23
  • 谈谈网页设计中的字体应用 (3) 实战应用篇·上

    2009-11-24 13:09:00
  • windows 64位下mysql8.0.25安装配置教程(最详细!)

    2024-01-22 17:36:27
  • 超级实用的8个Python列表技巧

    2021-01-14 06:27:12
  • Python之web模板应用

    2021-06-27 10:13:47
  • Go singleflight使用以及原理

    2024-04-27 15:31:09
  • python 字典常用方法超详细梳理总结

    2023-06-29 05:48:40
  • ajax在js中和jQuery中的用法实例详解

    2024-02-26 06:12:31
  • Python编程itertools模块处理可迭代集合相关函数

    2023-05-31 02:18:07
  • Python使用正则表达式获取网页中所需要的信息

    2023-04-08 17:13:33
  • ASP FSO显示特殊文件夹的实现代码(畸形目录名、UNC路径)

    2012-11-30 20:10:46
  • 总结Python中逻辑运算符的使用

    2023-01-10 14:54:40
  • GoFrame glist 基础使用和自定义遍历

    2024-05-28 15:23:26
  • vuecli3.0脚手架搭建及不同的打包环境配置vue.config.js的详细过程

    2024-04-30 08:42:13
  • 使用 Python 写一个简易的抽奖程序

    2023-07-28 00:46:54
  • 详解Python定时器Timer的使用及示例

    2021-01-25 23:54:34
  • Python删除windows垃圾文件的方法

    2023-08-24 15:38:23
  • Python中的re正则表达式模块

    2022-09-13 15:07:40
  • asp之家 网络编程 m.aspxhome.com