当前位置: 首页 > news >正文

opencv-图像透视变换

透射变换是视角变化的结果,是指利用透视中心,像点,目标点共线的条件,按透视旋转定律使承影面(透视面)绕迹线(透视轴旋转某一角度,破坏原有的投影光束,仍能保持承影面上投影几何图形不变的变化)

它的本质将图像投影到一个新的视平面,其通用变换公式为 

其中,(u,v)是原始图像像素坐标,w取值为1,(x=x'/z',y=y'/z')是透射变换后的结果。后面的矩阵称为透视变换矩阵,一般情况下我们将其分为三部分,如下图

 

T1(a00,a01,a10,a11)表示对图像进行线性代换,T2(a02,a12)对图像进行平移,T3对图像进行透射变换,a22一般设为1 

透射变换所需矩阵为3*3的矩阵,矩阵的最后一个数固定为1,所有需要求解这个矩阵的8个方程,而一个点(x,y)可以构建两个方程,所以共需要原图像4个点以及透射变换后对应4个点即可 

opencv中,通过函数cv2.getPerspectiveTransform找到变换矩阵,将cv2.warpPerspective应用于此3x3变换矩阵

import numpy as np
import cv2
img = cv2.imread('1.jpg')
rows,cols = img.shape[:2]#获取图像长和宽
pts1 = np.float32([[56,65],[368,52],[28,387],[389,390]])
pts2 = np.float32([[100,145],[300,100],[80,290],[310,300]])
T = cv2.getPerspectiveTransform(pts1, pts2)
dst = cv2.warpPerspective(img, T, (cols,rows))
cv2.imshow('1.jpg', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()

 

http://www.lryc.cn/news/417273.html

相关文章:

  • C++ 域
  • 安装Supervisor队列进程、管理 Laravel 队列进程
  • Windows入侵排查秘籍:锁死安全漏洞
  • 根据《广东省政务服务数字化条例》规定,政务服务数字化,是指将___广泛应用于政务服务,推动政务服务更加智能、便捷、高效的活动。()
  • git的基本操作和原理
  • Unity补完计划 之 SpriteRender
  • 数据结构第九讲:二叉树
  • 英伟达推出B200A瞄准OEM客群,预估2025年高端GPU出货量年增55%
  • Codeforces Round 962 (Div. 3)-补题
  • pandas的文本与序列化
  • 在企业级环境中部署Java程序:Docker命令实用指南
  • LabVIEW远程开发
  • 工作随记:我在OL8.8部署oracle rac遇到的问题
  • C++:vector容器
  • 深入理解 AWS CodePipeline
  • Qt:自定义钟表组件
  • 前端性能优化-web资源加载优先级
  • Docker-数据卷指令
  • Elasticsearch VS Typesense! Elasticsearch未来会被其它搜索引擎取代吗?
  • usb摄像头 按钮 静止按钮
  • SAP MM学习笔记 - 豆知识03 - 安全在库和最小安全在库,扩张物料的保管场所的几种方法,定义生产订单的默认入库保管场所,受注票中设定禁止贩卖某个物料
  • 激光导航AGV叉车那么多,究竟该怎么选?一篇文章讲明白~
  • redis面试(七)初识lua加锁脚本
  • 企元数智百年营销史的精粹:借鉴历史创造未来商机
  • Java @SpringBootTest注解用法
  • 构建智能招聘平台:人才招聘系统源码开发指南
  • Docker + Nacos + Spring Cloud Gateway 实现简单的动态路由配置修改和动态路由发现
  • Linux中多线程压缩软件 | Mingz
  • 【JavaEE精炼宝库】网络原理基础——UDP详解
  • 【回眸】周中WLB-个人