大家不要再理解错了!warpPerspective和warpAffine 不仅仅只有透视变换一个作用。

上一次做理论题时,搜索warpPerspective,结果给我弹出来一个透视变换,如下:

当时的我以为warpPerspective是一个专门做透视变换的函数,结果却不是这样的。

OpenCV 提供了两个变换函数, cv2.warpAffine 和 cv2.warpPerspective, 使用这两个函数你可以实现所有类型的变换。 cv2.warpAffine 接收的参数是 2 × 3 的变换矩阵,而 cv2.warpPerspective 接收的参数是 3 × 3 的变换矩阵。

下面给大家演示:

#这是不调用函数时,平移图像的例子
import cv2 as cv
import matplotlib.pyplot as plt
import numpy as np
import math#平移变换自己实现
Simg=cv.imread("D:\woman1.tif",0)
dimg=np.zeros(Simg.shape[:2],np.uint8)
height=Simg.shape[0]
width=Simg.shape[1]
tx=50;ty=100 #右下角平移
for row in range(height-ty):for col in range(width-tx):dimg[row+ty,col+tx]=Simg[row,col]
cv.imshow("sourceImage",Simg)
cv.imshow("destImage",dimg)
cv.waitKey(0)

那么调用函数,我们应该怎么用呢?

#调用函数平移
#函数 cv2.warpAffine() 的第三个参数的是输出图像的大小,它的格式应该是图像的(宽,高)
#应该记住的是图像的宽对应的是列数,高对应的是行数tx=50;ty=100 #右下角平移
affine_arr = np.float32([[1,0,tx],[0,1,ty],[0,0,1]])
res = cv.warpPerspective(Simg,affine_arr,(width,height))
cv.imshow("desttIMage",res)
cv.waitKey(0)

结果和上面一致。

除了平移外,我们还可以应用到很多场景。例如旋转,镜像,放缩等。

#放射变换 src 3 -> dst 3 (左上角, 左下角,右上角) 找三个点的坐标
matSrc = np.float32([[0,0],[0,height-1],[width-1, 0]]) # 需要注意的是 行列 和 坐标 是不一致的
matDst = np.float32([[50,50],[100, height-50],[width-100,50]])
matAffine = cv.getAffineTransform(matSrc,matDst) #mat 1 src 2 dst 形成组合矩阵
dst1 = cv.warpAffine(Simg, matAffine,(width, height))
cv.imshow('image',dst1)
cv.waitKey(0)
#旋转 绕图像中心点旋转,还需重算矩阵matrix
import math
angle=180#旋转角度
matrix=np.float32([[math.cos(angle),math.sin(angle),0],[-math.sin(angle),math.cos(angle),0]])
ret11=cv.warpAffine(Simg,matrix,(width,height))
cv.imshow("destIMage",ret11)
cv.waitKey(0)

放射变换如上。

opencv中cv2.warpAffine 和 cv2.warpPerspective的广泛应用相关推荐

  1. opencv函数cv2.warpAffine 和 cv2.warpPerspective 的理解和复现

    文章目录 opencv函数cv2.warpAffine 和 cv2.warpPerspective 的理解和复现 1. warpAffine 函数处理仿射变换 2. warp_perspective ...

  2. Python,OpenCV中的图像修复——cv2.inpaint()

    Python,OpenCV中的图像修复--cv2.inpaint 1. 效果图 2. 原理 3. 源码 参考 image inpainting 图像修改 这篇博客将介绍如何通过OpenCV中图像修复的 ...

  3. cv2.warpAffine和cv2.warpPerspective

    Opencv仿射变换(Affine Transformation)函数:cv2.warpAffine Affine Transformation:可实现旋转,平移,缩放,变换后的平行线依旧平行. Op ...

  4. python的cv2.warpAffine()和cv2.warpPerspective()解析对比

    1.cv2.warpAffine()放射变换函数,可实现旋转,平移,缩放:变换后的平行线依旧平行 cv2.warpAffine(src, M, dsize, dst=None, flags=None, ...

  5. OpenCV 中的 warpAffine

    warpAffine 是图像处理中比较常见的一种变换,可以将图像校正或对齐. 对于线性插值方式,OpenCV 首先将坐标映射保存成两张图,然后调用 remap 函数.第二步是比较耗时的部分,并且 wa ...

  6. 在OpenCV中使用单应性进行姿势估计

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 什么是单应性 单应性是一种平面关系,可将点从一个平面转换为另一个平 ...

  7. 【CV面试】RGB2GRAY、贝叶斯问题、cv2.add和cv2.addWeighted

    目录 1.opencv中RGB2GRAY是怎么实现的 2.贝叶斯问题 3.cv2.add和cv2.addWeighted 1.opencv中RGB2GRAY是怎么实现的 答:以R.G.B为轴建立空间直 ...

  8. opencv和pytorch中的warp操作函数:cv2.warpAffine, torch.nn.functional.grid_sample, cv2.warpPerspective

    关于图像的warp操作是指利用一个旋转缩放矩阵对图像进行操作. 常见的操作有,平移,绕某个点旋转,缩放. opencv中有getRotationMatrix2D,warpAffine, getAffi ...

  9. opencv图像仿射变换,cv2.warpAffine

    目录 仿射变换原理介绍 cv2.warpAffine函数介绍 代码实例 仿射变换原理介绍 仿射变换,又称仿射映射,是指在几何中,一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间. 在有 ...

最新文章

  1. docker load 出错 open /var/lib/docker/tmp/docker-import-837327978/bin/json: no such file or directory
  2. Java线程池面试必备:核心参数、工作流、监控、调优手段
  3. pandas使用groupby函数按照多个分组变量进行分组聚合统计、使用agg函数计算分组的多个统计指标(grouping by multiple columns in dataframe)
  4. python提供的默认的构造方法是什么_Python面试常见问题,__init__是构造函数吗?...
  5. oracle批量插入并且返回自增主键_oracle 自增主键实现批量更新和增加sql
  6. ROS系统中的多个版本Boost问题
  7. ASP.NET创建文件并写入内容
  8. 若依前后端部署之后验证码不显示
  9. 数据结构-树的基础代码
  10. c++学习笔记--C++Primer第4版--标准库类型string
  11. MATLAB中空间滤波卷积有什么作用
  12. 【luogu P2939 [USACO09FEB]改造路Revamping Trails】 题解
  13. The King’s Problem 强连通
  14. html5 Ajax 访问.net WebApi获取视频流
  15. 计算机网络(二)—— 物理层(1、2、3):物理层的基本概念、物理层的下面的传输媒体、传输方式
  16. access vba代码大全_VBA编程在翻译中的应用
  17. windows10强制删除文件_Windows10 初装必设置
  18. 【AI视野·今日NLP 自然语言处理论文速览 第十七期】Thu, 1 Jul 2021
  19. ArrayList和Linked的区别
  20. 【4】Git查看版本库当前状态

热门文章

  1. 雷军创业十年演讲全文!创业艰辛、乘风破浪、一往无前
  2. Web网站模板-横向滚动个人简历响应式网站模板(HTML+CSS+JavaScript)
  3. 如何选择一款好相机?
  4. RabbitMQ:消费者ACK机制、生产者消息确认
  5. 更换新电脑,如何将旧电脑数据/文件传输到新电脑?
  6. XXL-JOB 分布式任务调度 详解
  7. 怎么查自己电脑ip地址
  8. html 图片左上角圆角,圆角
  9. 立创元件导入AD集成库的方法
  10. Spring Security 安全框架