iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >OpenCV中常用图像几何变换有哪些
  • 540
分享到

OpenCV中常用图像几何变换有哪些

2023-06-22 02:06:14 540人浏览 泡泡鱼
摘要

这篇文章主要为大家展示了“OpenCV中常用图像几何变换有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“OpenCV中常用图像几何变换有哪些”这篇文章吧。0 程序环境与所学函数本章程序运行需

这篇文章主要为大家展示了“OpenCV中常用图像几何变换有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“OpenCV中常用图像几何变换有哪些”这篇文章吧。

0 程序环境与所学函数

本章程序运行需要导入下面三个库,并定义了一个显示图像的函数

所学函数

##放大、缩小cv.resize(img,dsize,[interpolation])##平移变换M = np.array([[...]], dtype=np.float32)cv.warpAffine(img, M, dsize)##镜像变换cv.flip(img, 1) # 垂直镜像cv.flip(img, 0) # 水平镜像cv.flit(img, -1) # 水平垂直同时进行##旋转变换M = cv.getRotationMatrix2D(center, angle, scale)img_rotate = cv.rotate(img, cv.ROTATE_90_CLOCKWISE)##透视变换M = cv.getPerspectiveTransfORM(src, dst)img = cv.warpPerspective(img, M, dsize)

1 裁剪、放大、缩小

读入图像

img =  cv.imread('pic/rabbit500x333.jpg')show(img)

显示

OpenCV中常用图像几何变换有哪些

裁剪:数组选择方法(冒号)

#裁剪rabbit = img[150:450:] #限定行数,列数和三通道show(rabbit)

显示

OpenCV中常用图像几何变换有哪些

放大和缩小:resize()函数

插值方法

OpenCV中常用图像几何变换有哪些

程序实现

#放大缩小#cv.resize(img,dsize,[interpolation])  dsize表示大小,[interpolation]是插值方法,可选,有默认值img2 = cv.resize(img,(500,400))  #放大为宽500高400#使用定义插值方法#一般来说放大地话选择LINEAR方法,缩小选择AREA方法img3 = cv.resize(img,(500,400),interpolation=cv.INTER_NEAREST)show(np.hstack([img2,img3]))

显示

OpenCV中常用图像几何变换有哪些

2 平移变换

原理、平移矩阵推导

OpenCV中常用图像几何变换有哪些

读入图像

img = cv.imread('pic/rabbit500x333.jpg')show(img)

显示

OpenCV中常用图像几何变换有哪些

程序实现

# M = np.array([[...]],dtype=np.float32) # cv.warAffine(img,M,dsize) cv里面图像仿射变换函数,M是上面矩阵,dsize是输出图像大小M=np.array([    [1,0,100],    [0,1,50]],dtype=np.float32)  #水平向右平移100个像素点,竖直向下平移50个像素点,原理见理论部分 img2 = cv.warpAffine(img,M,(333,500))show(img2)

显示

OpenCV中常用图像几何变换有哪些

3 错切变换

原理、错切矩阵推导

OpenCV中常用图像几何变换有哪些

OpenCV中常用图像几何变换有哪些

读入图像

img = cv.imread('pic/rabbit500x333.jpg')show(img)

显示

OpenCV中常用图像几何变换有哪些

水平错切

M = np.array([    [1,0.2,0],    [0,1,0]],dtype=np.float32) img3 = cv.warpAffine(img,M,(533,500))show(img3)

显示

OpenCV中常用图像几何变换有哪些

垂直错切

M = np.array([    [1,0,0],    [0.3,1,0]],dtype=np.float32) img3 = cv.warpAffine(img,M,(333,700))show(img3)

显示

OpenCV中常用图像几何变换有哪些

4 镜像变换

原理、镜像矩阵推导

OpenCV中常用图像几何变换有哪些

读入图像

img = cv.imread('pic/rabbit500x333.jpg')show(img)

显示

OpenCV中常用图像几何变换有哪些

水平镜像

Mx = np.array([    [-1,0,333],    [0,1,0]],dtype = np.float32)img2 = cv.warpAffine(img,Mx,(333,500))  #仿射变换函数show(img2)

显示

OpenCV中常用图像几何变换有哪些

垂直镜像

My = np.array([    [1,0,0],    [0,-1,500]],dtype=np.float32) img3 = cv.warpAffine(img,My,(333,500))show(img3)

显示

OpenCV中常用图像几何变换有哪些

opencv内置函数实现镜像变换

#垂直镜像 cv.flip(img,1)

#水平镜像 cv.flip(img,0)

#水平垂直同时进行 cv.flip(img,-1)

程序实现

img4 = cv.flip(img,1)  #垂直镜像img5 = cv.flip(img,0)  #水平镜像img6 = cv.flip(img,-1) #水平垂直镜像同时进行 show(np.hstack([img4,img5,img6]))

显示

OpenCV中常用图像几何变换有哪些

5 旋转变换

原理、旋转矩阵推导

OpenCV中常用图像几何变换有哪些

OpenCV中常用图像几何变换有哪些

读入图像

img = cv.imread('pic/rabbit500x333.jpg')show(img)

显示

OpenCV中常用图像几何变换有哪些

图像旋转

beta = np.pi/4#旋转矩阵M  = np.array([    [np.cos(beta),np.sin(beta),0],    [-np.sin(beta),np.cos(beta),0]],dtype=np.float32) img2 = cv.warpAffine(img,M,(633,300))show(img2)

显示

OpenCV中常用图像几何变换有哪些

opencv内置获取旋转矩阵函数:

M = cv.getRotationMatrix2D(center,angle,scale)  

center是旋转中心,angle是旋转角度,scale表示放大还是缩小

用上面函数获取旋转矩阵并实现图像旋转

h,w,c = img.shape  #获取图像的高度和宽度,方便后面设置旋转中心 M2 = cv.getRotationMatrix2D((w//2,h//2),45,1)img3 = cv.warpAffine(img,M2,(533,500))  #仿射函数实现show(img3

显示

OpenCV中常用图像几何变换有哪些

opencv内置实现图像旋转函数

img_rotate =cv.rotate(img,cv.ROTATE_90_COUNTERCLOCKWISE)

只能进行90度倍数的旋转

程序实现

# 逆时针旋转90度img_rotate = cv.rotate(img,cv.ROTATE_90_COUNTERCLOCKWISE)show(img_rotate)

显示

OpenCV中常用图像几何变换有哪些

6 透视变换

M = cv.getPerspectiveTransform(str,dst)

str:原始图像矩阵端点位置,dst:目标图像矩阵位置

img2 = cv.warpPerspective(img,M,(w,h))

读入图像

img = cv.imread('pic/parthenon500x750.jpg')show(img)

显示

OpenCV中常用图像几何变换有哪些

程序实现

#在原图中定位四个点,这里找的是柱子前面四个点的大概位置,眼睛观察法找的str = np.array([    [210,50],    [610,270],    [650,470],    [150,450]],dtype=np.float32) #目标图像中矩阵dst = np.array([    [150,50],    [650,50],    [650,470],    [150,470]],dtype=np.float32) h,w,c = img.shape #透视变换将一个类似矩形的图形拉成一个矩形M = cv.getPerspectiveTransform(str,dst)img2 = cv.warpPerspective(img,M,(w,h))show(img2)

显示

OpenCV中常用图像几何变换有哪些

应用:车道检测、图片矫正

7 最近邻插值、双线性插值

原理:

OpenCV中常用图像几何变换有哪些

最近邻插值图示:

OpenCV中常用图像几何变换有哪些

双线性插值图示

OpenCV中常用图像几何变换有哪些

读入图像

img = cv.imread('pic/rabbit50x33.jpg')show(img)

显示

OpenCV中常用图像几何变换有哪些

程序实现

img1 = cv.resize(img,(330,500),interpolation=cv.INTER_NEAREST) #最近邻插值img2 = cv.resize(img,(330,500),interpolation=cv.INTER_LINEAR_EXACT) #精确双线新插值 show(np.hstack([img1,img2]))

显示

OpenCV中常用图像几何变换有哪些

可以看出最近邻插值还是比较模糊的,过渡结果没有双线性插值平滑

以上是“OpenCV中常用图像几何变换有哪些”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: OpenCV中常用图像几何变换有哪些

本文链接: https://www.lsjlt.com/news/301816.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • OpenCV中常用图像几何变换有哪些
    这篇文章主要为大家展示了“OpenCV中常用图像几何变换有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“OpenCV中常用图像几何变换有哪些”这篇文章吧。0 程序环境与所学函数本章程序运行需...
    99+
    2023-06-22
  • OpenCV图像处理之七种常用图像几何变换
    目录0 程序环境与所学函数1 裁剪、放大、缩小2 平移变换3 错切变换4 镜像变换5 旋转变换6 透视变换7 最近邻插值、双线性插值0 程序环境与所学函数 本章程序运行需要导入下面三...
    99+
    2024-04-02
  • opencv实现图像几何变换
    本文实例为大家分享了opencv实现图像几何变换的具体代码,供大家参考,具体内容如下 图像伸缩(cv2.resize) 图像的扩大与缩小有专门的一个函数,cv2.resize(),那...
    99+
    2024-04-02
  • OpenCV实现常见的四种图像几何变换
    目录准备图片1. 缩放 cv2.resize()方法2. 翻转 cv2.flip()方法3. 仿射变换 warpAffine()方法3.1 平移3.2 旋转3.3 倾斜4. 透视准备...
    99+
    2024-04-02
  • opencv如何实现图像几何变换
    这篇文章给大家分享的是有关opencv如何实现图像几何变换的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。图像伸缩(cv2.resize)图像的扩大与缩小有专门的一个函数,cv2.resize(),那么关于伸缩需要...
    99+
    2023-06-14
  • C++ opencv图像处理怎么实现图片几何变换
    本文小编为大家详细介绍“C++ opencv图像处理怎么实现图片几何变换”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++ opencv图像处理怎么实现图片几何变换”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入...
    99+
    2023-06-30
  • C++opencv图像处理实现图片几何变换示例
    目录简介一、图像平移1.图像平移代码 (不改变图像大小)2.图像平移代码 (改变图像大小)二、图像旋转1.图像旋转函数2.仿射变换函数3.代码三、图像缩放1.图像缩放函数2.图像缩小...
    99+
    2024-04-02
  • OpenCV图像变换之傅里叶变换的一些应用
    目录前言1. 效果图 2. 原理 3. 源码 3.1 Numpy实现傅里叶变换3.2 OpenCV实现傅里叶变换3.3 HPF or LPF?参考总结前言 这篇博客将介绍OpenCV...
    99+
    2024-04-02
  • Python图像处理之几何变换
    目录一.图像几何变换二.图像平移三.图像缩放四.图像旋转五.总结一.图像几何变换 图像几何变换不改变图像的像素值,在图像平面上进行像素变换。适当的几何变换可以最大程度地消除由于成像角...
    99+
    2024-04-02
  • Python使用 OpenCV 进行图像投影变换
    投影变换(仿射变换) 在数学中,线性变换是将一个向量空间映射到另一个向量空间的函数,通常由矩阵实现。如果映射保留向量加法和标量乘法,则映射被认为是线性变换。 要将线性变换应用于向量...
    99+
    2024-04-02
  • 如何分析Python图像处理中的几何变换
    今天就跟大家聊聊有关如何分析Python图像处理中的几何变换,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一.图像几何变换图像几何变换不改变图像的像素值,在图像平面上进行像素变换。适...
    99+
    2023-06-29
  • Python OpenCV如何实现图像傅里叶变换
    这篇文章给大家分享的是有关Python OpenCV如何实现图像傅里叶变换的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。二维离散傅里叶变换(DFT)对于二维图像处理,通常使用 x , y x, yx,y...
    99+
    2023-06-28
  • 图文详解matlab原始处理图像几何变换
    目录(一)图像几何变换理论知识(1)图像的平移与比例(2)关于旋转变换(3)关于对称变换(4)复合变换(二)matlab编程实现变换(1)对图像的理解(2)比例变换(3)对称变换总结...
    99+
    2024-04-02
  • 怎么使用OpenCV对图像进行空间变换
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-22
  • OpenCV如何通过透视变换实现矫正图像
    这篇“OpenCV如何通过透视变换实现矫正图像”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“OpenCV如何通过透视变换实现...
    99+
    2023-07-05
  • CSS图像替换技术方案有哪几种
    这篇文章主要讲解了“CSS图像替换技术方案有哪几种”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“CSS图像替换技术方案有哪几种”吧!Levin的方案:Lev...
    99+
    2024-04-02
  • PaddlePaddle中有哪些常用的图像增强技术
    PaddlePaddle中常用的图像增强技术包括: 随机裁剪(RandomCrop):在训练图像中随机裁剪出指定大小的区域,可以...
    99+
    2024-04-02
  • 常用的图像处理软件有哪些
    常用的图像处理软件有:1、照片修图,一款手机的专属修图小工具;2、ps修图软件,特别专业的一款手机应用软件;3、天天P图,特别有趣的一款修图手机应用app;4、照片编辑P图,专门为修图推出的一款功能非常强大的软件;5、P图照片编辑器等等。常...
    99+
    2023-07-10
  • vb中图像框控件的常用属性有哪些
    VB中的图像框控件常用属性有:1. BackColor:设置图像框的背景颜色。2. BorderColor:设置图像框的边框颜色。3...
    99+
    2023-10-10
    vb
  • OpenCV通过Mat遍历图像的方法有哪些
    本文小编为大家详细介绍“OpenCV通过Mat遍历图像的方法有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“OpenCV通过Mat遍历图像的方法有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。我们在实际...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作