OpenCV.Resize详解
来源:互联网 发布:js 时间格式转换 编辑:程序博客网 时间:2024/05/22 17:05
OpenCV.Resize 详解
resize函数在各个图像处理项目里都应用十分广泛。最近一个小作业,整理图片大小不一样的数据集,就把它详细学习了一下。
函数调用:
c++:
void resize(InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_LINEAR)
python:
cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) -> dst
C:
void cvResize(const CvArr* src, CvArr* dst, int interpolation=CV_INTER_LINEAR)
参数说明:
src - 原图
dst - 目标图像。当参数dsize不为0时,dst的大小为size;否则,它的大小需要根据src的大小,参数fx和fy决定。dst的类型(type)和src图像相同
dsize - 目标图像大小。当dsize为0时,它可以通过以下公式计算得出:
所以,参数dsize和参数(fx, fy)不能够同时为0。
fx - 水平轴上的比例因子。当它为0时,计算公式如下:
fy - 垂直轴上的比例因子。当它为0时,计算公式如下:
interpolation - 插值方法。共有5种:
1)INTER_NEAREST - 最近邻插值法
2)INTER_LINEAR - 双线性插值法(默认)
3)INTER_AREA - 基于局部像素的重采样(resampling using pixel area relation)。对于图像抽取(image decimation)来说,这可能是一个更好的方法。但如果是放大图像时,它和最近邻法的效果类似。
4)INTER_CUBIC - 基于4x4像素邻域的3次插值法
5)INTER_LANCZOS4 - 基于8x8像素邻域的Lanczos插值
以上五种插值算法的具体过程可以参考:opencv.resize函数五种插值算法实现过程
使用注意事项:
dsize和fx/fy不能同时为0,要么你就指定好dsize的值,让fx和fy空置直接使用默认值,就像
resize(img, imgDst, Size(30,30));
要么你就让dsize为0,指定好fx和fy的值,比如fx=fy=0.5,那么就相当于把原图两个方向缩小一倍!至于最后的插值方法,正常情况下使用默认的双线性插值就够用了。
几种常用方法的效率是:最邻近插值>双线性插值>双立方插值>Lanczos插值;
但是效率和效果成反比,所以根据自己的情况酌情使用。正常情况下,在使用之前dst图像的大小和类型都是不知道的,类型从src图像继承而来,大小也是从原图像根据参数计算出来。但是如果你事先已经指定好dst图像的大小,那么你可以通过下面这种方式来调用函数:
resize(src, dst, dst.size(), 0, 0, interpolation);
- OpenCV.Resize详解
- OpenCV resize()
- OpenCV Resize()
- OpenCV: resize
- opencv resize一张图像
- OpenCV Resize image
- opencv resize/cvtcolor
- opencv resize函数
- OpenCV Resize Reshape
- opencv的resize( )函数
- Resize和Reshape-opencv
- Opencv函数之resize
- opencv 分辨率与resize
- OpenCV中的Resize和Reshape
- OpenCV中的Resize和Reshape
- opencv学习笔记之resize
- Opencv尺寸调整-resize函数
- opencv中的reshape和resize
- myEclipse更改网站名称
- Xcode工程直接拖
- 171114—程序学习:猜数游戏。
- Beaglebone Black 开发笔记
- #!/bin/bash和#!/bin/sh是什么意思以及区别
- OpenCV.Resize详解
- 优达机器学习:异常值
- 如何对比两个Jar包
- 爬虫实战爬取数据
- 课外作业之CountDownLatch应用详解
- 深入C++的new
- C#将字符串转化成二进制
- const /*/& 在一起要干嘛 ?!
- 用java导出word并下载文件