缩放图像是图像处理中需要经常使用的操作。太小的图像在图像识别中不能很好的处理,需要将其放大,太大的图像不方便储存,需要将其缩小,下面记录OpenCV图片缩放方法。

缩放函数

void resize(InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_LINEAR )
参数说明:
src – 原图像
dst – 输出图像
dsize – 输出图像大小,如果为0 则通过此公式计算得到:Size(round(fx*src.cols), round(fy*src.rows)),dsize和fx,fy不能全为空
fx – x方向缩放比例
fy – y方向缩放比例
interpolation – 插值方法:
– INTER_NEAREST - a nearest-neighbor interpolation
– INTER_LINEAR - a bilinear interpolation (used by default)
– INTER_AREA - resampling using pixel area relation. It may be a preferred method for
image decimation, as it gives moire’-free results. But when the image is zoomed, it is
similar to the INTER_NEAREST method.
– INTER_CUBIC - a bicubic interpolation over 4x4 pixel neighborhood
– INTER_LANCZOS4 - a Lanczos interpolation over 8x8 pixel neighborhood

使用示例(放大图像)

下面代码演示使用不同的缩放方法放大同一张图片的结果。

int main( int argc, char** argv )
{
Mat matSrc = imread("oripic.jpg",1);
Mat matDst_INTER_NEAREST,matDst_INTER_LINEAR,matDst_INTER_AREA,matDst_INTER_CUBIC,matDst_INTER_LANCZOS4;
//原图使用不同的方法放大5倍后的结果
resize(matSrc,matDst_INTER_NEAREST,Size(0,0),5,5,INTER_NEAREST);
resize(matSrc,matDst_INTER_LINEAR,Size(0,0),5,5,INTER_LINEAR);
resize(matSrc,matDst_INTER_AREA,Size(0,0),5,5,INTER_AREA);
resize(matSrc,matDst_INTER_CUBIC,Size(0,0),5,5,INTER_CUBIC);
resize(matSrc,matDst_INTER_LANCZOS4,Size(0,0),5,5,INTER_LANCZOS4);
namedWindow("OriPicture");
imshow("OriPicture",matSrc);
namedWindow("INTER_NEAREST");
imshow("INTER_NEAREST",matDst_INTER_NEAREST);
namedWindow("INTER_LINEAR");
imshow("INTER_LINEAR",matDst_INTER_LINEAR);
namedWindow("INTER_AREA");
imshow("INTER_AREA",matDst_INTER_AREA);
namedWindow("INTER_CUBIC");
imshow("INTER_CUBIC",matDst_INTER_CUBIC);
namedWindow("INTER_LANCZOS4");
imshow("INTER_LANCZOS4",matDst_INTER_LANCZOS4);
waitKey(0);
}

放大结果:

使用示例(缩小图像)

下面代码将指定图片缩小为当前的0.3

int main( int argc, char** argv )
{
Mat matSrc = imread("oripic1.png",1);
Mat matDst_INTER_NEAREST,matDst_INTER_LINEAR,matDst_INTER_AREA,matDst_INTER_CUBIC,matDst_INTER_LANCZOS4;
//原图使用不同的方法放大5倍后的结果
resize(matSrc,matDst_INTER_NEAREST,Size(0,0),0.3,0.3,INTER_NEAREST);
resize(matSrc,matDst_INTER_LINEAR,Size(0,0),0.3,0.3,INTER_LINEAR);
resize(matSrc,matDst_INTER_AREA,Size(0,0),0.3,0.3,INTER_AREA);
resize(matSrc,matDst_INTER_CUBIC,Size(0,0),0.3,0.3,INTER_CUBIC);
resize(matSrc,matDst_INTER_LANCZOS4,Size(0,0),0.3,0.3,INTER_LANCZOS4);
namedWindow("OriPicture",WINDOW_AUTOSIZE);
imshow("OriPicture",matSrc);
namedWindow("INTER_NEAREST",WINDOW_AUTOSIZE);
imshow("INTER_NEAREST",matDst_INTER_NEAREST);
namedWindow("INTER_LINEAR");
imshow("INTER_LINEAR",matDst_INTER_LINEAR);
namedWindow("INTER_AREA");
imshow("INTER_AREA",matDst_INTER_AREA);
namedWindow("INTER_CUBIC");
imshow("INTER_CUBIC",matDst_INTER_CUBIC);
namedWindow("INTER_LANCZOS4");
imshow("INTER_LANCZOS4",matDst_INTER_LANCZOS4);
waitKey(0);
}

缩小效果(方法名没有在图像中显示,可以自行运行代码查看效果)

Open CV缩放图像的更多相关文章

  1. 本图片处理类功能非常之强大可以实现几乎所有WEB开发中对图像的处理功能都集成了,包括有缩放图像、切割图像、图像类型转换、彩色转黑白、文字水印、图片水印等功能

    import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Font; import java.awt.Graphic ...

  2. AForge,Emgu.CV抓拍图像大小

    原文:AForge,Emgu.CV抓拍图像大小 2017年,忙忙碌碌地过去了,象往年一样,依然没有时间上CSDN,博客园. 这一年是打工以来最辛苦的一年. 这一年用了不少自己没有接触过的东西.如人脸识 ...

  3. [CV笔记]图像特征提取三大法宝:HOG特征,LBP特征,Haar特征

    (一)HOG特征 1.HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子.它通过计算和 ...

  4. delphi 处理缩放图像

    procedure TTMEImageDeviceIdentifyFrom.DrawText(AImage : TImage; AFile: string);var I: Integer; iWidt ...

  5. OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放

    这篇已经写得很好,真心给作者点个赞.题目都是直接转过来的,直接去看吧. Reference Link : http://blog.csdn.net/poem_qianmo/article/detail ...

  6. 【OpenCV新手教程之十三】OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/26157633 作者:毛星云(浅墨) ...

  7. openCV(三)---图像缩放

    UIImage *img1 = [UIImage imageNamed:@"1448941176867"]; //将UIImage转换为IplImage格式 IplImage *p ...

  8. opencv3 图像处理(一)图像缩放( python与c++ 实现)

    opencv3 图像处理 之 图像缩放( python与c++实现 ) 一. 主要函数介绍 1) 图像大小变换 Resize () 原型: void Resize(const CvArr* src,C ...

  9. 学习 opencv---(12)OpenCV 图像金字塔:高斯金字塔,拉普拉斯金字塔与图片尺寸缩放

    在这篇文章里,我们一起学习下 图像金字塔 的一些基本概念,如何使用OpenCV函数pyrUp和pyrDown 对图像进行向上和向下采样,以及了解专门用于缩放图像尺寸的resize函数的用法.此博文一共 ...

随机推荐

  1. 三大WEB服务器对比分析(apache ,lighttpd,nginx)

    一.软件介绍(apache  lighttpd  nginx) 1. lighttpd Lighttpd是一个具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点.lighttpd是众多 ...

  2. PL/SQL 中查询CLOB字段内容

    oracle中的clob类型字段不能直接显示出来,需要借助Oracle系统dbms_lob中substr方法处理,如select dbms_lob.substr(clobField) from tab ...

  3. zepto.js之ajax剖析

    1.ajax的baseHeaders ajax插件中的baseHeaders对象的是http请求头部的信息 var mime = settings.accepts[dataType], baseHea ...

  4. OpenGL Driver Architecture[转]

    http://www.cnblogs.com/cgwolver/archive/2009/01/04/1368350.html

  5. LOD

    [教程] 三分钟了解LOD在游戏里面的运用 http://www.narkii.com/club/thread-321290-1.html Unity3d 游戏场景优化 - LOD(Level-of- ...

  6. Linux 挂载 NFS

    NFS(网络文件系统),这是在 Linux 系统上常用的文件共享方式.也可以做为作为一个远程存储使用,比如:我有个网站,用户可以上传文件,但文件慢慢会越来越多,这个时候我们只能把存放上传文件的目录挂在 ...

  7. python mysql

    mysql Linux 安装mysql: apt-get install mysql-server 安装python-mysql模块:apt-get install python-mysqldb Wi ...

  8. Java多线程编程核心技术---对象及变量的并发访问(二)

    数据类型String的常量池特性 在JVM中具有String常量池缓存的功能. public class Service { public static void print(String str){ ...

  9. 新浪微博客户端(50)-解决输入Emotion表情逐渐变小的问题

    UITextView+Extension.h #import <UIKit/UIKit.h> @interface UITextView (Extension) /** 插入属性文本 */ ...

  10. SpringMVC应用

    SpringMVC的核心是DispatcherServlet,这个Servlet充当SpringMVC的前端控制器. SpringMVC是多线程的吗??? 控制器是一个用于处理请求的Spring组件. ...