OpenCv中改变图像尺寸
来源:互联网 发布:桐乡淘宝摄影基地 编辑:程序博客网 时间:2024/05/01 11:15
首先初始目标图像尺寸:
方法一:IplImage*
分析:size.width &-2----size.width和-2做‘与’运算
从补码算起,我们知道计算机内存里面负数是以补码形式存储并参与运算的,那-2的补码是多少呢?在vc环境下,注意到cvsize结构体内成员变量是int型的,而vc里面int型是占4个字节的所以-2的补码是:
1111111111111111 11111111 11111110
那么size.width &-2就是把最后一位width的最后一位置0,
下面分析为什么要把最后一位置为0
- 如果源图像的width为奇数,则通过和-2相与,最后一位设为0,相当于图像width减小了1,然后再除以2,刚好为源图像分配了一半的width
- 如果源图像的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);
方法三:按具体高宽
CvSizedst_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中改变图像尺寸
- OpenCv中改变图像尺寸
- opencv改变图像的尺寸
- opencv之改变图像尺寸
- OPENCV入门教程八:resize改变图像尺寸
- opencv中用Resize和图像金字塔改变尺寸的区别
- 【OpenCV学习笔记】【函数学习】七(改变图像尺寸)
- opencv对图像的旋转操作以及尺寸改变
- opencv:图像尺寸调整
- MATLAB中改变彩色图像的尺寸大小
- python opencv 图像尺寸变换
- 对图像尺寸重置 opencv
- python opencv 图像尺寸变换
- python opencv 图像尺寸变换
- opencv 改变图像对比度
- Opencv中findContours函数改变输入图像问题
- vfp改变图像尺寸的大小
- 用opencv改变图片大小(像素、尺寸)
- apue和unp的学习之旅01——网络基本概念
- IOS中的随机数arc4random方法
- mysql删除,插入,查询等语句的总结
- 参数个数不同的函数载体(C++)
- java利用JXL包操作Excel表
- OpenCv中改变图像尺寸
- 拓扑排序c++实现
- Uboot 内存初始化(2440)
- android:layout_gravity和android:gravity的区别
- 数据结构 排序
- ObservableCollection和List的区别总结
- java Runtime类
- javaAPI类
- 如何成为软件架构师