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

缩放函数

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

使用示例(放大图像)

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

  1. int main( int argc, char** argv )
  2. {
  3. Mat matSrc = imread("oripic.jpg",1);
  4. Mat matDst_INTER_NEAREST,matDst_INTER_LINEAR,matDst_INTER_AREA,matDst_INTER_CUBIC,matDst_INTER_LANCZOS4;
  5. //原图使用不同的方法放大5倍后的结果
  6. resize(matSrc,matDst_INTER_NEAREST,Size(0,0),5,5,INTER_NEAREST);
  7. resize(matSrc,matDst_INTER_LINEAR,Size(0,0),5,5,INTER_LINEAR);
  8. resize(matSrc,matDst_INTER_AREA,Size(0,0),5,5,INTER_AREA);
  9. resize(matSrc,matDst_INTER_CUBIC,Size(0,0),5,5,INTER_CUBIC);
  10. resize(matSrc,matDst_INTER_LANCZOS4,Size(0,0),5,5,INTER_LANCZOS4);
  11. namedWindow("OriPicture");
  12. imshow("OriPicture",matSrc);
  13. namedWindow("INTER_NEAREST");
  14. imshow("INTER_NEAREST",matDst_INTER_NEAREST);
  15. namedWindow("INTER_LINEAR");
  16. imshow("INTER_LINEAR",matDst_INTER_LINEAR);
  17. namedWindow("INTER_AREA");
  18. imshow("INTER_AREA",matDst_INTER_AREA);
  19. namedWindow("INTER_CUBIC");
  20. imshow("INTER_CUBIC",matDst_INTER_CUBIC);
  21. namedWindow("INTER_LANCZOS4");
  22. imshow("INTER_LANCZOS4",matDst_INTER_LANCZOS4);
  23. waitKey(0);
  24. }

放大结果:

使用示例(缩小图像)

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

  1. int main( int argc, char** argv )
  2. {
  3. Mat matSrc = imread("oripic1.png",1);
  4. Mat matDst_INTER_NEAREST,matDst_INTER_LINEAR,matDst_INTER_AREA,matDst_INTER_CUBIC,matDst_INTER_LANCZOS4;
  5. //原图使用不同的方法放大5倍后的结果
  6. resize(matSrc,matDst_INTER_NEAREST,Size(0,0),0.3,0.3,INTER_NEAREST);
  7. resize(matSrc,matDst_INTER_LINEAR,Size(0,0),0.3,0.3,INTER_LINEAR);
  8. resize(matSrc,matDst_INTER_AREA,Size(0,0),0.3,0.3,INTER_AREA);
  9. resize(matSrc,matDst_INTER_CUBIC,Size(0,0),0.3,0.3,INTER_CUBIC);
  10. resize(matSrc,matDst_INTER_LANCZOS4,Size(0,0),0.3,0.3,INTER_LANCZOS4);
  11. namedWindow("OriPicture",WINDOW_AUTOSIZE);
  12. imshow("OriPicture",matSrc);
  13. namedWindow("INTER_NEAREST",WINDOW_AUTOSIZE);
  14. imshow("INTER_NEAREST",matDst_INTER_NEAREST);
  15. namedWindow("INTER_LINEAR");
  16. imshow("INTER_LINEAR",matDst_INTER_LINEAR);
  17. namedWindow("INTER_AREA");
  18. imshow("INTER_AREA",matDst_INTER_AREA);
  19. namedWindow("INTER_CUBIC");
  20. imshow("INTER_CUBIC",matDst_INTER_CUBIC);
  21. namedWindow("INTER_LANCZOS4");
  22. imshow("INTER_LANCZOS4",matDst_INTER_LANCZOS4);
  23. waitKey(0);
  24. }

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

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. IIS------无法打开登录所请求的数据库 "company"。登录失败。 用户 'IIS APPPOOL\AppPool 4.0' 登录失败。

    链接: http://www.cnblogs.com/VortexPiggy/archive/2013/04/06/3002055.html

  2. 端口扫描(TCP)

    还待优化... #include <string.h> #include <WinSock.h> #include <stdio.h> #pragma commen ...

  3. MAC 系统下使用 Sublime Text 2 直接编译运行 java 代码

    本文参考了网上很多文章,就不一一列出了. sublime的版本是 sublime test 2 jdk版本 jdk1.7 1. mac下貌似直接就可以运行javac 和 java命令的,如果不能直接运 ...

  4. Effective Objective-C 2.0 — 第12条:理解消息转发机制

    11 条讲解了对象的消息传递机制 12条讲解对象在收到无法解读的消息之后会发生什么,就会启动“消息转发”(message forwarding)机制, 若对象无法响应某个选择子,则进入消息转发流程. ...

  5. Java并发编程核心方法与框架-CyclicBarrier的使用

    CyclicBarrier类似于CountDownLatch也是个计数器,不同的是CyclicBarrier数的是调用了CyclicBarrier.await()进入等待的线程数,当线程数达到了Cyc ...

  6. Java中的char到底是多少个字节?

    貌似一个简单的问题(也许还真是简单的)但是却把曾经自认为弄清楚的我弄得莫名其妙 char在Java中应该是16个字节byte在Java中应该是8个字节char x = '编'; //这样是合法的,输出 ...

  7. fopen()和fclose()的用法

    fopen()和fclose()的用法 1.fopen()函数的用法 fopen函数用于打开文件, 其调用格式为: FILE *fopen(char *filename, *type); fopen( ...

  8. some experience duing wrting myweb in php

    书写风格:一切以 最高效, 最简单为 标准!! 不必管格式的规范了! 在html中, 的属性是用双引号, 在php, tp中, 没有特殊情况, 都是用单引号. vim 下how to format c ...

  9. UvaLive6661 Equal Sum Sets dfs或dp

    UvaLive6661 PDF题目 题意:让你用1~n中k个不同的数组成s,求有多少种组法. 题解: DFS或者DP或打表. 1.DFS 由于数据范围很小,直接dfs每种组法统计个数即可. //#pr ...

  10. oracle中一些用法总结

    1. case用法: --简单case函数 case sex when '1' then 'boy' when '2' then 'girl' else '其他' end; --case搜索函数 ca ...