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行代码。

  1. 首先我们设置下输出图片的宽width为250,高height为350。
  2. 然后读取我们的图片,就是上面这张图。
  3. 定义目标区域的四个点坐标,分别为:左上、右上、左下、右下。我们在上一步已经获取到了。
  4. pst2是输出图片在图片框中的位置,选择平铺即可,固定写法。
  5. 使用库函数warpPerspective实现透视变换,感兴趣的可以深入了解下原理。
  6. 最后输出并且显示两张图像。
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(五)-透视变换相关推荐

  1. 3h精通OpenCV(六)-图像堆叠

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

  2. 3h精通OpenCV(四)-绘制形状与文本

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

  3. 3h精通OpenCV(三)-重调大小与图像裁剪

    0.准备工作 右击新建的项目,选择Python File,新建一个Python文件,然后在开头import cv2导入cv2库. 我们还要知道在OpenCV中,坐标轴的方向是x轴向右,y轴向下,坐标原 ...

  4. 3h精通OpenCV(二)-基本功能

    0.准备工作 右击新建的项目,选择Python File,新建一个Python文件,然后在开头import cv2导入cv2库. 1.转成灰度图像 调用imread()方法获取我们资源文件夹中的图片l ...

  5. 3h精通OpenCV(一)- 读取图像视频与网络摄像头

    0.准备工作 右击新建的项目,选择Python File,新建一个Python文件,然后在开头import cv2导入cv2库. 1.读取图像 调用imread()方法获取我们资源文件夹中的图片 使用 ...

  6. 3h精通OpenCV(七)-颜色检测

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

  7. 文档扫描仪的构建——使用Python,OpenCV应用透视变换来获得图像的自顶向下的“鸟瞰图”

    使用Python,OpenCV应用透视变换来获得图像的自顶向下的"鸟瞰图" 1. 效果图 2. 应用透视变换的步骤 3. 优化:矩形角点的获取 4. 源码 参考 这篇博客演示了如何 ...

  8. GPU 编程入门到精通(五)之 GPU 程序优化进阶

    版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 博主由于工作当中的需要,开始学习 GPU 上面的编程,主要涉及到的是基于 GPU 的深度学习方面的知识,鉴于之前没有接触过 GP ...

  9. OpenCV:透视变换

    一.话说透视变换 透视变换是将图像从一个视平面投影到另外一个视平面的过程,所以透视变换也被称为投影映射(Projection Mapping).我们知道在图像的仿射变换中需要变换矩阵是一个2x3的两维 ...

最新文章

  1. python虚拟环境 windows环境搭建_windows 下搭建python虚拟环境(示例代码)
  2. Spring5源码 - Spring IOC 注解复习
  3. Winform中使用EasyPlayer-RTSP-Win开源组件实现播放RTSP视频流
  4. java 使用.aar_java - 使用grad解析aar库的传递依赖性
  5. 博士申请 | 加拿大Mila实验室唐建教授招收深度学习方向博士生和实习生
  6. 联发科有没有高端处理器_2021年华为将成为联发科最大客户?麒麟或将“灭亡?”...
  7. MySQL面试 - 读写分离
  8. 深入学习卷积神经网络中卷积层和池化层的意义(转)
  9. 刚性捆绑,无线运营新模式
  10. 运营之光:我的互联网运营方法论与自白学习总结(思维导图)
  11. 在无聊的时候玩小游戏
  12. php获取电脑硬件配置,如何查看电脑硬件配置
  13. 老牛不知所以然-html中超长文字单行省略对弹性盒子约束的破坏现象
  14. 微信订阅消息推送(记录)
  15. Android制作圆形背景
  16. linux技能包【7】:制作 https 自签名证书
  17. hadoop -appendToFlie unknown command
  18. ruby 数组自定义排序_在Ruby中对数组排序
  19. 利用树莓派,实现迅雷24小时远程下载
  20. SaaS将导航中小企业

热门文章

  1. opencv图片旋转90°/-90°/180°(网上很多转换,长宽出问题,这里可以长宽对其)
  2. 使用自定义功能构建Mamdani系统
  3. 此电脑怎么放在桌面上_电脑内部与麦克风的声音怎么同时录制?详细教程在此...
  4. 让自律成为你2019年的新名片,快来看这24种建议
  5. 显示器颜色偏灰不鲜明_你离学会后期调色,只差了一块颜色“正确”的摄影显示器...
  6. 平流式沉淀池表面负荷怎么计算_竖流式与辐流式沉淀池
  7. python模块之wordcloud
  8. dismiss 多个viewController
  9. csv+jenkins+ant测试接口
  10. 51nod 1256 扩展欧几里得