Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >OpenCV 3.1.0中的图像放缩与旋转

OpenCV 3.1.0中的图像放缩与旋转

作者头像
OpenCV学堂
发布于 2018-04-04 02:46:29
发布于 2018-04-04 02:46:29
2.4K0
举报

OpenCV在3.1.0版本中的图像放缩与旋转操作比起之前版本中更加的简洁方便,同时还提供多种插值方法可供选择。首先来看图像放缩,通过OpenCV核心模块API函数resize即可实现图像的放大与缩小。

一:图像放缩(zoom in/out)

函数resize相关API参数介绍

-src表示输入图像,类型一般是Mat类型

-dst表示输出图像,类型一般是Mat类型

-dsize表示输出图像大小,如果是零的话表示从fx与fy两个参数计算得到 dsize= Size(round(src.cols*fx), round(src.rows*fy))

-fx表示水平方向或者X方向的放缩因子,类型是浮点数

-fy表示垂直方向或者Y方向的放缩因子,类型是浮点数

-interpolation表示像素插值计算算法是哪一种。当前OpenCV 3.1.0中支持常见插值算法包括:

-临近点(INTER_NEAREST)、

-双线性插值(INTER_LINEAR)、

-立方插值(INTER_CUBIC)、

-LANCZOS4(INTER_LANCZOS4)、

-面积采样(INTER_AREA)

等八种像素插值方法。当对图像放大时候最常用的插值方法是双线性与立方插值方式,当对图像缩小时候OpenCV推荐使用的是面积采样方法。

API演示

-放大代码演示

-缩小代码演示

在放大时候基于临近点插值方法会产生锯齿,但是因为计算量比较少所以速度比较快,而线性插值与立方插值速度跟临近点插值相比速度没有优势但是都具备反锯齿能力。

运行效果

原图

0.75倍resize图像

1.25倍resize图像,基于线性插值

1.25倍resize图像,基于立方插值

二:旋转

图像绕原点逆时针旋转a角,其变换矩阵及逆矩阵(顺时针选择)的图像如下:

矩阵中最后一列表示原点坐标是(0, 0)但是对于实际图像来说使用的屏幕坐标其原点(0, 0)在左上角位置,而其真实的原点位置为(width/2, height/2)才是矩阵描述原点(0, 0)位置。其中width表示输入图像的宽度,height表示输入图像的高度。

OpenCV3.1.0中实现图像旋转需要用到的两个API函数分别是

- getRotationMatrix2D

- warpAffine

第一个函数是用来产生旋转矩阵M,第二个函数是根据旋转矩阵M实现图像指定角度的旋转。基于这两个API实现图像旋转的代码如下:

效果显示如下:

从上面旋转以后图像可以看到四个角被剪切掉了,无法显示,我们希望旋转之后图像还能够全部显示,在之前2.x的OpenCV版本中要实现这样的功能,需要很多的数学知识,而在3.1.0中只需要添加如下几行代码即可实现旋转之后的全图显示,代码实现如下:

旋转之后全图显示如下:

可以看出基于OpenCV3.1.0实现图像旋转的时候同样会涉及到像素插值问题,可以选择的插值算法跟放缩时候一致。在OpenCV3.1.0中默认的插值算法是线性插值(INTER_LINEAR=1)。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-02-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 OpenCV学堂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
OpenCV-resize函数「建议收藏」
dst:输出,改变大小之后的图像,这个图像和原图像具有相同的内容,只是大小和原图像不一样而已;
全栈程序员站长
2022/08/01
6690
图像插值算法和OpenCV框架
最近邻插值,是指将目标图像中的点,对应到源图像中后,找到最相邻的整数点,作为插值后的输出。
致Great
2020/04/24
1.4K0
图像插值算法和OpenCV框架
opencv: 图像缩放(cv2.resize)
使用cv2.resize时,参数输入是 宽×高×通道 ,与以往操作不同,需要注意。具体参见opencv: cv2.resize 探究(源码)。
JNingWei
2018/09/28
3.4K0
opencv: 图像缩放(cv2.resize)
opencv2.4.13.7的resize函数使用(c++)
C++: void resize(InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_LINEAR )
chenjx85
2019/05/08
1.2K0
opencv2.4.13.7的resize函数使用(c++)
10、图像的几何变换——平移、镜像、缩放、旋转、仿射变换 OpenCV2:图像的几何变换,平移、镜像、缩放、旋转(1)OpenCV2:图像的几何变换,平移、镜像、缩放、旋转(2)数字图像
  图像几何变换又称为图像空间变换,它将一副图像中的坐标位置映射到另一幅图像中的新坐标位置。我们学习几何变换就是确定这种空间映射关系,以及映射过程中的变化参数。图像的几何变换改变了像素的空间位置,建立一种原图像像素与变换后图像像素之间的映射关系,通过这种映射关系能够实现下面两种计算:
vv彭
2020/10/27
3.9K0
10、图像的几何变换——平移、镜像、缩放、旋转、仿射变换
    


OpenCV2:图像的几何变换,平移、镜像、缩放、旋转(1)OpenCV2:图像的几何变换,平移、镜像、缩放、旋转(2)数字图像
Python库OpenCV安装、配置、使用教程:图像缩放cv2.resize函数用法详解
在数据科学与计算机视觉的领域中,Python库OpenCV 是最常用的工具之一,无论是处理图像还是视频,都能提供强大的支持。特别是在进行图像缩放时,cv2.resize 函数更是核心利器。不论你是新手入门还是高手进阶,这篇文章将为你详细讲解 如何安装OpenCV、配置环境,以及高效使用cv2.resize函数,实现 .jpg、.png 或 .bmp 等格式图片的快速缩放。
猫头虎
2025/01/10
2630
cv2.resize()
cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) -> dst
狼啸风云
2019/09/19
2.9K0
cv2.resize()
“大脑”生长系列(四)
void resize(InputArray src, OutputArray dst, Size dsize, double fx = 0, double fy = 0, int interpolaiton == INTER_LINEAR);
视界音你而不同
2020/04/10
2720
“大脑”生长系列(四)
【OpenCV】Chapter3.图像的仿射变换
仿射变换其实包含了一系列的操作:平移,缩放,旋转等,不过所有的操作都可以通过这个仿射变换矩阵来实现。
zstar
2022/09/22
1.3K0
【OpenCV】Chapter3.图像的仿射变换
OpenCV这么简单为啥不学——1.3、图像缩放resize函数
计算机视觉市场巨大而且持续增长,且这方面没有标准API,如今的计算机视觉软件大概有以下三种:
红目香薰
2023/02/10
8650
OpenCV这么简单为啥不学——1.3、图像缩放resize函数
解决OpenCV Error: Assertion failed (ssize.width > 0 && ssize.height > 0) in cv::re
当我们在使用OpenCV进行图像处理时,有时候会遇到如下错误信息:OpenCV Error: Assertion failed (ssize.width > 0 && ssize.height > 0) in cv::resize, file C:\proj。这个错误通常是由于图像的宽度或高度为0导致的。在本篇文章中,我将介绍一些可能导致这个错误的原因,并提供一些解决方法。
大盘鸡拌面
2023/10/26
1.3K0
OpenCV的resize方法与双线性插值
训练Object Detection模型SSD完毕之后进入test阶段,每张图像在进入输入层之前需要进行resize操作,以满足CNN模型对输入层size的要求。本文首先介绍了Caffe实现的SSD模型对输入图像的变换规定,引出了OpenCV中的resize方法,最后介绍该方法中的插值参数cv.INTER_LINEAR和该插值方法的原理。
用户1332428
2018/07/30
2.4K0
OpenCV的resize方法与双线性插值
OpenCV 几何变换-图像缩放
图像的缩放主要用于改变图像的大小,缩放后图像的图像的宽度和高度会发生变化。在图像处理中是一种很基础的几何变换,但是具有很重要的作用,比如:当输入图片尺寸过大时,处理速度会很慢,适当的缩小图像可以在不影响处理效果的同时有效提高代码执行速度。 opencv提供了resize函数实现图片缩放功能,函数原型为:
chaibubble
2022/05/07
4610
OpenCV 几何变换-图像缩放
OpenCV 几何变换-图像旋转
OpenCV提供了warpAffine函数实现图片仿射变换功能,我们可以利用这个函数实现图像旋转,函数原型为:
chaibubble
2022/05/07
2770
OpenCV 几何变换-图像旋转
OpenCV学习笔记:resize函数改变图像的大小
dst:输出,改变大小之后的图像,这个图像和原图像具有相同的内容,只是大小和原图像不一样而已;
全栈程序员站长
2022/07/23
1.1K0
一文讲解图像插值算法原理!附Python实现
寄语:本文梳理了最近邻插值法、双线性插值法和三次样条插值法的原理,并以图像缩放为例,对原理进行了C++及Python实现。
Datawhale
2020/04/24
6.8K0
一文讲解图像插值算法原理!附Python实现
『带你学算法』详解OpenCV中Reszie操作与原理
dst - 目标图像。当参数dsize不为0时,dst的大小为size;否则,它的大小需要根据src的大小,参数fx和fy决定。dst的类型(type)和src图像相同
小宋是呢
2020/12/10
3.5K0
『带你学算法』详解OpenCV中Reszie操作与原理
解决cv2.error: C:\projects\opencv-python\opencv\modules\imgproc\src\resize.cpp:404
当我们使用OpenCV库的​​cv2.resize()​​函数对图像进行缩放操作时,有时候可能会遇到以下错误:​​cv2.error: C:\projects\opencv-python\opencv\modules\imgproc\src\resize.cpp:4044: error: (-215) s​​。这个错误通常是由于函数参数设置不正确引起的。本篇博客将介绍如何解决这个错误。
大盘鸡拌面
2023/10/18
2.7K0
OpenCV 图片缩放
对图像进行缩放的最简单方法就是调用OpenCV中resize函数。resize函数可以将源图像精确地转化为指定尺寸的目标图像。要缩小图像,一般推荐使用CV_INETR_AREA来插值;若要放大图像,推荐使用CV_INTER_LINEAR。
AI异构
2020/07/29
3.6K0
OpenCV 图片缩放
图像处理: 五种 插值法
在一维空间中,最近点插值就相当于四舍五入取整。在二维图像中,像素点的坐标都是整数,该方法就是选取离目标点最近的点。
JNingWei
2018/09/27
4.5K0
图像处理: 五种 插值法
推荐阅读
相关推荐
OpenCV-resize函数「建议收藏」
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档