前言

  有时会碰到一张图片太大了,想将它缩小。本文将讲解一个很好用的函数解决这个问题。

图像尺寸调整函数 cvResize()

  1. // 图像尺寸调整函数
  2. void Resize (
  3. const CvArr * src,            // 待处理图像
  4. CvArr * dst,              // 处理后图像
  5. int interpolation = CV_LINTER_LINTER //插值方法
  6. )

  在调用此函数前,需要定制好处理后图像的格式,再将其内存块地址传入第二个参数;对于第三个参数可暂时不去理会,使用默认参数即可,它的作用是提供一种让像素点发现图像缩放后其对应点的( 插值 )方法。

代码示例

  下面的程序将原来图像的尺寸缩短一半:

  1. // 此头文件包含图像IO函数的声明
  2. #include "highgui.h"
  3. // 此头文件包含基本的图像处理函数和高级计算机视觉算法
  4. #include "cv.h"
  5.  
  6. int main (void) {
  7.  
  8. // 将D盘目录下名为" 1.jpg "的图像加载至内存并获得一个指向该图像内存块的指针img
  9. IplImage * img = cvLoadImage ("D:\\1.jpg");
  10.  
  11. // 创建一个窗口显示调整前的图像
  12. cvNamedWindow ("处理前", CV_WINDOW_AUTOSIZE);
  13.  
  14. // 将图像装载进窗口并显示此窗口
  15. cvShowImage ("处理前", img);
  16.  
  17. // 创建一个新的图像内存块,以存放调整后的结果。
  18. IplImage * out = cvCreateImage (
  19. cvSize (img->height/, img->width/),
  20. img->depth,
  21. img->nChannels
  22. );
  23.  
  24. // 图像尺寸调整函数。
  25. cvResize (
  26. img,
  27. out
  28. );
  29.  
  30. // 创建一个窗口显示调整前的图像
  31. cvNamedWindow ("处理后", CV_WINDOW_AUTOSIZE);
  32.  
  33. // 将图像装载进窗口并显示此窗口
  34. cvShowImage ("处理后", out);
  35.  
  36. // 该函数的参数为 0 时,程序将等待用户触发一个按键操作。
  37. // 若参数为正整数,则程序将暂停该整数个毫秒单位直至用户有任何按键。
  38. cvWaitKey ();
  39.  
  40. // 释放图像内存块
  41. cvReleaseImage (&img);
  42. cvReleaseImage (&out);
  43.  
  44. // 关闭窗口同时释放窗口内存块
  45. cvDestroyWindow ("处理前");
  46. cvDestroyWindow ("处理后");
  47.  
  48. return ;
  49. }

运行结果

  

  

小结

  可以发现,收缩后的图像效果不好。

  其实图像的伸缩变化没有想象的那么简单,具体的改进方法将会在以后的文章中介绍。

调整图像的尺寸 - cvResize() 函数实现的更多相关文章

  1. C#中如何调整图像大小

    在本篇文章中,我将介绍如何在C#中来调整你想要的图像大小.要实现这一目标,我们可以采取以下几个步骤: 1.首先要获取你想要调整大小的图像: string path = Server.MapPath(& ...

  2. [译]Android调整图像大小的一些方法

    翻译自 某大神在Stack Overflow里的自问自答 (一般我们将Bitmap翻译为位图,但为了更好理解,在本文中我将它翻译成图像): 我们在开发的时候,经常需要从服务器中加载图像到客户端中,但有 ...

  3. CFormView动态调整对话框的尺寸和调整比例控制的部署

    基于单个文件CFormView动态调整对话框的尺寸和调整比例控制的部署 假设你正在开发一个程序基于单个文件,使用CFormView基类来实现多种形式展示,那么,这个文件可能会给你一点帮助. 一.实现对 ...

  4. 调整图像的灰度级数C++实现

    图像灰度级数我们见得最多的就是256了,如果想调整它的灰度级数,我们可以使用图像库的imadjust函数来作出调整,比如讲256个灰度级变成2个灰度级(也就是二值图了).再举一个例子,原来一幅256个 ...

  5. OpenCV --- 修改图像的对比度、亮度 、RGB转Gray图像、修改图像的尺寸

    #include <opencv2/core.hpp> #include <opencv2/imgcodecs.hpp> #include <opencv2/highgu ...

  6. (opencv08)cv.resize()调整图像大小

    (opencv08)cv.resize()调整图像大小 img = cv2.resize(src, dsize, dst=None, fx=None, fy=None, interpolation=N ...

  7. 如何在 HTML 中调整图像大小?

    了解在 HTML 中调整图像大小的不同技术.何时应避免在浏览器端调整大小,以及在 Web 上操作和提供图像的正确方法. 如果您的图像不适合布局,您可以在 HTML 中调整其大小.在 HTML 中调整图 ...

  8. JAVA代码根据经纬度范围计算WGS84与谷歌全球墨卡托包含的切片数目与拼接图像像素尺寸

    根据项目需求编写的代码. 适用场景:在网络地图上,比如天地图与谷歌地图,用户用鼠标在地图上拉一个矩形框,希望下载该矩形框内某一层级的瓦片数据,并将所有瓦片拼接成一个完整的,包含地理坐标的tif图像. ...

  9. 卷积神经网络(CNN)张量(图像)的尺寸和参数计算(深度学习)

    分享一些公式计算张量(图像)的尺寸,以及卷积神经网络(CNN)中层参数的计算. 以AlexNet网络为例,以下是该网络的参数结构图. AlexNet网络的层结构如下: 1.Input:       图 ...

随机推荐

  1. 为什么mfc的入口是InitInstance()而没有WinMain() (转)

    学过PE文件格式,就明白,程序在进入WinMain之前要做很多事情,比如初始Dos头,分配函数表,初始化全局变量,之后才进入程序入口(WinMain) MFC对WindowsAPI进行了封装.在用向导 ...

  2. [MySQL] lock知识梳理

    MySQL Lock机制 INDEX: MySQL事务隔离级别 MVCC MySQL Lock类型 MySQL MDL CONTENT: 1. MySQL事务隔离级别 Read Uncommit RU ...

  3. hdu 1852(快速幂模+有除法的时候取模的公式)

    Beijing 2008 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/65535 K (Java/Others)Tota ...

  4. Django ModelChoiceField前台下拉菜单显示object的解决方法

    在网上找了好半天都没找到,在model中添加即可,不加的话显示就是object def __str__(self): return self.name

  5. vue.js移动端app实战2

    貌似有部分人要求写的更详细,这里多写一点vuel-cli基础的配置 什么是vue-cli? 官方的解释是:A simple CLI for scaffolding Vue.js projects,简单 ...

  6. EasyMvc入门教程-高级控件说明(18)弹出框控件

    前面两节介绍了信息框与对话框,实际开发中如果我们遇到更复杂的要求,比如要求在弹出框里显示另外的网址,如下所示: 实现代码如下: @Html.Q().Popup().Text("我可以嵌套网页 ...

  7. ylb:了解存储过程

    ylbtech-SQL Server:SQL Server-了解存储过程 了解存储过程 ylb:了解存储过程 返回顶部 存储过程 2.2.1 主要的编程结构: 变量 数据类型 输入/输出变量 返回值 ...

  8. python logging模块学习(转)

    前言 日志是非常重要的,最近有接触到这个,所以系统的看一下Python这个模块的用法.本文即为Logging模块的用法简介,主要参考文章为Python官方文档,链接见参考列表. 另外,Python的H ...

  9. 转: maven打可执行的jar包以及classpath设置

    from:  http://drizzlewalk.blog.51cto.com/2203401/416508

  10. [java面试]关于多态性的理解

    执行时多态性是面向对象程序设计代码重用的一个最强大机制.Java多态性的概念也能够被说成"一个接口.多个方法".Java实现执行时多态性的基础是动态方法调度,它是一种在执行时而不是 ...