缩放图像是图像处理中需要经常使用的操作。太小的图像在图像识别中不能很好的处理,需要将其放大,太大的图像不方便储存,需要将其缩小,下面记录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. angularjs笔记(一)

    简介 AngularJS API angularjs是javascript框架,通过指令(指令就是自定义的html标签属性)扩展了HTML,并且可以通过表达式(表达式使用)绑定数据到HTML. 1.a ...

  2. ecshop 获取某个商品的 所有订单信息 或者销量

    把一下代码放到 lib_main.php 1.统计某个下单商品的人数 function get_goods_ordernum($goods_id){ $sql = "select count ...

  3. JNDI全面总结

    JNDI全面总结原理: 在DataSource中事先建立多个数据库连接,保存在数据库连接池中.当程序访问数据库时,只用从连接池中取空闲状态的数据库连接即可,访问结束,销毁资源,数据库连接重新回到连接池 ...

  4. JavaScript 面向对象程序设计(下)——继承与多态 【转】

    JavaScript 面向对象程序设计(下)--继承与多态 前面我们讨论了如何在 JavaScript 语言中实现对私有实例成员.公有实例成员.私有静态成员.公有静态成员和静态类的封装.这次我们来讨论 ...

  5. Sqlserver2008 表分区教程

    先声明..Sql2008只有企业版才能够搞这个表分区.其他版本请自觉更改.. 哥在这里费了很长时间劲..结果还是老老实实的重装.. 表分区定义 一般情况下,我们建立数据库表时,表数据都存放在一个文件里 ...

  6. 使用Java练习算法常用的基本操作

    一.使用Java练习算法常常需要使用控制台的数据输入和输出,下面记录一下基本的使用方法: 基本用法 import java.util.*; public class Main { public sta ...

  7. Ubuntu终端常用的快捷键

    Ubuntu终端常用的快捷键 Ubuntu中的许多操作在终端(Terminal)中十分的快捷,记住一些快捷键的操作更得心应手.在Ubuntu中打开终端的快捷键是Ctrl+Alt+T.其他的一些常用的快 ...

  8. 【8-22】java学习笔记04

    java基础类库 Scanner类(java.util.scanner) Scanner对象.hasNextXxx(),hasNext()默认方法为字符串://Returns true if this ...

  9. Python程序的常见错误(收集篇)

    关于Python Python是一门解释性的,面向对象的,并具有动态语义的高级编程语言.它高级的内置数据结构,结合其动态类型和动态绑定的特性,使得它在快速应用程序开发(Rapid Applicatio ...

  10. 源码编译安装 screen

    本文转自:http://blog.163.com/oracle_wwf/blog/static/213030127201211191481101/ [root@web1 soft]# wget ftp ...