3h精通OpenCV(五)-透视变换
0、准备工作 |
---|
右击新建的项目,选择Python File,新建一个Python文件,然后在开头import cv2
导入cv2库,import numpy
并且重命名为np
。
import cv2
import numpy as np
我们还要知道在OpenCV中,坐标轴的方向是x轴向右,y轴向下,坐标原点在左上角,比如下面这张长为640像素,宽为480像素的图片。OK,下面开始本节的学习吧。
1、场景描述 |
---|
给定任意一张图像,从中分割出你需要的区域,并且以指定的大小显示出来。而且分割出的图像在线性空间中还是与显示的窗口是平行的。就比如:我想要获取下面的K,原图中K是斜躺着的,分割后显示出来应该是竖直站立的。那么该如何实现这样的效果呢?
在实现上述效果前,我们需要获取些重要信息,比如说上图中扑克牌K的四个坐标点。我们可以使用画图工具打开这张图片,然后将鼠标放置在分割区域的四个点上,即可获取到坐标信息。
因为画图中图像的宽高坐标轴和OpenCV是一样的,
当我将鼠标放到K左上角时,画图的左下角就显示出来(734像素,185像素),
这就是左上角这个点的坐标。
2、透视变换 |
---|
上面的要求实现看起来比较困难,但是用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)
我们来看下效果,左图是我们透视变换的图像,右图是原图像:
第五节的内容,其实很有趣,在生活中有很多应用。眼过千遍不如手过一遍,快去动手敲一遍吧~
3h精通OpenCV(五)-透视变换相关推荐
- 3h精通OpenCV(六)-图像堆叠
0.准备工作 右击新建的项目,选择Python File,新建一个Python文件,然后在开头import cv2导入cv2库,import numpy并且重命名为np. import cv2 imp ...
- 3h精通OpenCV(四)-绘制形状与文本
0.准备工作 右击新建的项目,选择Python File,新建一个Python文件,然后在开头import cv2导入cv2库,import numpy并且重命名为np. import cv2 imp ...
- 3h精通OpenCV(三)-重调大小与图像裁剪
0.准备工作 右击新建的项目,选择Python File,新建一个Python文件,然后在开头import cv2导入cv2库. 我们还要知道在OpenCV中,坐标轴的方向是x轴向右,y轴向下,坐标原 ...
- 3h精通OpenCV(二)-基本功能
0.准备工作 右击新建的项目,选择Python File,新建一个Python文件,然后在开头import cv2导入cv2库. 1.转成灰度图像 调用imread()方法获取我们资源文件夹中的图片l ...
- 3h精通OpenCV(一)- 读取图像视频与网络摄像头
0.准备工作 右击新建的项目,选择Python File,新建一个Python文件,然后在开头import cv2导入cv2库. 1.读取图像 调用imread()方法获取我们资源文件夹中的图片 使用 ...
- 3h精通OpenCV(七)-颜色检测
0.准备工作 右击新建的项目,选择Python File,新建一个Python文件,然后在开头import cv2导入cv2库,import numpy并且重命名为np. import cv2 imp ...
- 文档扫描仪的构建——使用Python,OpenCV应用透视变换来获得图像的自顶向下的“鸟瞰图”
使用Python,OpenCV应用透视变换来获得图像的自顶向下的"鸟瞰图" 1. 效果图 2. 应用透视变换的步骤 3. 优化:矩形角点的获取 4. 源码 参考 这篇博客演示了如何 ...
- GPU 编程入门到精通(五)之 GPU 程序优化进阶
版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 博主由于工作当中的需要,开始学习 GPU 上面的编程,主要涉及到的是基于 GPU 的深度学习方面的知识,鉴于之前没有接触过 GP ...
- OpenCV:透视变换
一.话说透视变换 透视变换是将图像从一个视平面投影到另外一个视平面的过程,所以透视变换也被称为投影映射(Projection Mapping).我们知道在图像的仿射变换中需要变换矩阵是一个2x3的两维 ...
最新文章
- python虚拟环境 windows环境搭建_windows 下搭建python虚拟环境(示例代码)
- Spring5源码 - Spring IOC 注解复习
- Winform中使用EasyPlayer-RTSP-Win开源组件实现播放RTSP视频流
- java 使用.aar_java - 使用grad解析aar库的传递依赖性
- 博士申请 | 加拿大Mila实验室唐建教授招收深度学习方向博士生和实习生
- 联发科有没有高端处理器_2021年华为将成为联发科最大客户?麒麟或将“灭亡?”...
- MySQL面试 - 读写分离
- 深入学习卷积神经网络中卷积层和池化层的意义(转)
- 刚性捆绑,无线运营新模式
- 运营之光:我的互联网运营方法论与自白学习总结(思维导图)
- 在无聊的时候玩小游戏
- php获取电脑硬件配置,如何查看电脑硬件配置
- 老牛不知所以然-html中超长文字单行省略对弹性盒子约束的破坏现象
- 微信订阅消息推送(记录)
- Android制作圆形背景
- linux技能包【7】:制作 https 自签名证书
- hadoop -appendToFlie unknown command
- ruby 数组自定义排序_在Ruby中对数组排序
- 利用树莓派,实现迅雷24小时远程下载
- SaaS将导航中小企业
热门文章
- opencv图片旋转90°/-90°/180°(网上很多转换,长宽出问题,这里可以长宽对其)
- 使用自定义功能构建Mamdani系统
- 此电脑怎么放在桌面上_电脑内部与麦克风的声音怎么同时录制?详细教程在此...
- 让自律成为你2019年的新名片,快来看这24种建议
- 显示器颜色偏灰不鲜明_你离学会后期调色,只差了一块颜色“正确”的摄影显示器...
- 平流式沉淀池表面负荷怎么计算_竖流式与辐流式沉淀池
- python模块之wordcloud
- dismiss 多个viewController
- csv+jenkins+ant测试接口
- 51nod 1256 扩展欧几里得