原文地址:OpenCv中改变图像尺寸作者:鸳都学童

首先初始目标图像尺寸:

方法一:IplImage*  dst= cvCreateImage( cvSize((size.width & -2)/2, (size.height & -2)/2), 8, 1 );

分析:size.width & -2----size.width和-2做‘与’运算

从补码算起,我们知道计算机内存里面负数是以补码形式存储并参与运算的,那-2的补码是多少呢?在vc环境下,注意到cvsize结构体内成员变量是int型的,而vc里面int型是占4个字节的所以-2的补码是:

11111111 11111111 11111111 11111110

那么size.width & -2就是把最后一位width的最后一位置0,

下面分析为什么要把最后一位置为0

  1. 如果源图像的width为奇数,则通过和-2相与,最后一位设为0,相当于图像width减小了1,然后再除以2,刚好为源图像分配了一半的width
  2. 如果源图像的width为偶数,则通过和-2相与,该数值不变,然后除以2,也为源图像分配一半的width。

方法二:按比例缩放float scale = 0.723; //缩放倍数为0.723倍则定义:

CvSize dst_size;

dst_size.height = (int)(pSrc->height*scale);
dst_size.width = (int)(pSrc->width*scale);

IplImage* dst= cvCreateImage( dst_size,8, 1 );

方法三:按具体高宽 

CvSize dst_size;

dst_size.height = 120;
dst_size.width = 60;

IplImage* dst= cvCreateImage( dst_size,8, 1 );

然后具体实施缩放

cvResiz(src,dst,CV_INTER_LINEAR );

插值方法:
CV_INTER_NN - 最近邻插值,
CV_INTER_LINEAR - 双线性插值 (缺省使用)
CV_INTER_AREA - 使用象素关系重采样。当图像缩小时候,该方法可以避免波纹出现。当图像放大时,类似于 CV_INTER_NN 方法..
CV_INTER_CUBIC - 立方插值.

注:

cvResize(src,dst)
必须先分配好空间,注意数据类型一致性,多数错误都是因为数据类型问题。
cvConvertScale(src,dst,scale,shift)
先分配好空间,注意数据类型,同为单通道,或多通道。
可以实现不同深度之间的转换,scale和shift要注意。

【OpenCV学习笔记】【函数学习】七(改变图像尺寸)相关推荐

  1. OpenCV学习笔记(十六)——CamShift研究 OpenCV学习笔记(十七)——运动分析和物体跟踪Video OpenCV学习笔记(十八)——图像的各种变换(cvtColor*+)imgproc

    OpenCV学习笔记(十六)--CamShift研究 CamShitf算法,即Continuously Apative Mean-Shift算法,基本思想就是对视频图像的多帧进行MeanShift运算 ...

  2. OpenCV学习笔记(十七):图像修补:inpaint()

    OpenCV学习笔记(十七):图像修补:inpaint() inpaint()函数 使用区域邻域在图像中还原选定区域. void inpaint( InputArray src, // 表示要修复的图 ...

  3. OpenCV学习笔记(十):图像金字塔Pyramid和图像缩放:pyrDown(),pyrUp(),resize()

    OpenCV学习笔记(十):图像金字塔Pyramid和图像缩放:pyrDown(),pyrUp(),resize() 一.图像金字塔定义: 图像金字塔是图像中多尺度表达的一种,最主要用于图像的分割,是 ...

  4. OpenCV学习笔记(三):图像对比度、亮度调整源码

    OpenCV学习笔记(三):图像对比度.亮度调整源码 主函数: #include <opencv2/opencv.hpp>using namespace cv;using namespac ...

  5. Kinect开发学习笔记之(七)骨骼数据的提取

    Kinect开发学习笔记之(七)骨骼数据的提取 zouxy09@qq.com http://blog.csdn.net/zouxy09 我的Kinect开发平台是: Win7x86 + VS2010 ...

  6. 20171220-python学习笔记--函数类型

    20171220-python学习笔记--函数类型 备注: #位置参数 #传入两个参数 def power(x, n):s = 1while n > 0:n = n - 1s = s * xre ...

  7. PMBOK(第六版) 学习笔记 ——《第七章 项目成本管理》

    系列文章目录 PMBOK(第六版) 学习笔记 --<第一章 引论> PMBOK(第六版) 学习笔记 --<第二章 项目运行环境> PMBOK(第六版) 学习笔记 --<第 ...

  8. JavaScript学习笔记——函数 Part4:向函数传递函数、从函数返回函数(函数是一等公民)

    要点 函数是值,这个值就是函数引用 函数是一等公民:函数引用是一等值 可将函数引用赋给变量.含在数据结构(如对象)中.传递给其他函数或从其他函数返回 函数是一等公民 不要再认为函数是特殊的,有别于Ja ...

  9. Python3学习笔记之-学习基础(第三篇)

    Python3学习笔记之-学习基础(第三篇) 文章目录 目录 Python3学习笔记之-学习基础(第三篇) 文章目录 一.循环 1.for循环 2.while循环 3.break,continue 二 ...

  10. 强化学习笔记-强化学习概述

    强化学习笔记-强化学习概述 机器学习分类 强化学习与监督学习的异同点 强化学习基本原理 强化学习解决的是什么样的问题 强化学习分类 请分别解释随机性策略和确定性策略 回报.值函数.行为值函数三个指标的 ...

最新文章

  1. Flask web开发之路四
  2. kpc v0.8.3发布,跨框架的组件库解决方案
  3. 详解虚函数的实现过程之虚基类(4)
  4. linux week3
  5. webstorm两个文件比对_webstorm怎么更改文件名称?或者是重命名
  6. c#namespace
  7. Phthon学习---错误处理、调试和测试
  8. 超燃!奇安信首度对外公开内部网络攻防演习纪实片
  9. Docker入门之常用命令
  10. 【路径规划】基于matlab RRT算法求解机器人避障路径规划问题【含Matlab源码 319期】
  11. MongoDB之Robo3T客户端安装
  12. 密西根州立大学计算机qs分数,2020年密歇根州立大学QS世界排名
  13. Strust2 success sucess
  14. BUPT OJ143 Triangle
  15. 清华大学推荐:这32本书籍你看过几本?
  16. LeetCode刷题记 --- pta 7- 4
  17. 优秀的汽车后市场门店应该具备的数字化能力
  18. UE/UI/UCD/UED 区别
  19. 店盈通电商:拼多多发货地址不一样有关系吗?
  20. Windows安装VirtualBox教程(图文版)

热门文章

  1. C++ 虚函数表详解
  2. python保留字符串之外的_Python--字符串
  3. (秒杀项目) 4.7 缓存商品与用户
  4. 属性绑定v-bind指令
  5. 计算机组装内部线的整理,计算机组装与维护笔记整理.doc
  6. python读取csv数据出错_在python中读取csv文件时出现错误“no such file or directory”...
  7. 引用饼图echarts_3D 饼图在 VUE 中的实现
  8. 域名解析到指定端口_南京课工场IT培训:搭建nginx虚拟主机——基于域名、端口和IP...
  9. 浮点型的数字如何进行range_连接型CRM | 渠道经销订货数字化转型,5大关键角色的如何应用...
  10. 软件测试测试用例编写 不超过7步骤_软件测试(功能、接口、性能、自动化)详解...