基于OpenCV的透视变化

基本概念

透视变换(Perspective Transformation)是仿射变换的一种非线性扩展,是将图片投影到一个新的视平面(Viewing Plane),也称作投影映射(Projective Mapping)。

原理:将二维的图片投影到一个三维视平面上,然后再转换到二维坐标下,所以也称为投影映射(Projective Mapping)。

相对仿射变换来说,改变了直线之间的平行关系

透视变换的特点

透视变换相比仿射变换更加灵活,变换后会产生一个新的四边形,但不一定是平行四边形,需要非共线的四个点才能唯一确定

变换后原图中的直线变换后依然是直线

四边形包括了所有的平行四边形,所以透视变换包括了所有的仿射变换

openCV中实现透视变换方法:

首先根据变换前后的四个点用cv.getPerspectiveTransform()生成3×3的变换矩阵

再用cv2.warpPerspective()进行透视变换

OpenCV实现透视变换的函数

函数cv2.warpPerspective()

格式:cv2.warpPerspective(src, M, dsize[, dst[, flags[, borderMode[, borderValue]]]])

src: 输入图像

M:大小为3×3的转换矩阵

其他参数含义与cv2.warpAffine()函数中的一致

函数cv2.getPerspectiveTransform()

格式:M=cv2.getPerspectiveTransform(src,dst)

src:原图像中4个点的坐标

dst:原图像中4个点在转换后的目标图像中的对应坐标

 代码示例

 

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-01-08 11:54:06       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-08 11:54:06       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-08 11:54:06       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-08 11:54:06       20 阅读

热门阅读

  1. 浅谈前端工程化

    2024-01-08 11:54:06       32 阅读
  2. CComboBox重载在CListCtrl中使用

    2024-01-08 11:54:06       36 阅读
  3. 入门使用mybatis-plus

    2024-01-08 11:54:06       28 阅读
  4. 【WPF.NET开发】为控件中的焦点设置样式

    2024-01-08 11:54:06       42 阅读
  5. 每日一练:LeeCode-641. 设计循环双端队列【设计】

    2024-01-08 11:54:06       38 阅读
  6. Git 概念与基础命令

    2024-01-08 11:54:06       36 阅读
  7. centos8拉取nginx最新版本到本地

    2024-01-08 11:54:06       26 阅读
  8. React Three Fiber动画

    2024-01-08 11:54:06       39 阅读