转自http://www.cnblogs.com/korbin/p/5612427.html

在图像处理过程中,有时需要把图像调整到同样大小,便于处理,这时需要用到图像resize()

原函数
void resize(InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_LINEAR )
前两个参数分别为输入和输出图像。dsize表示输出图像的大小,如果为0,则

dsize=Size(round(fx∗src.cols),round(fy∗src.rows))dsize=Size(round(fx∗src.cols),round(fy∗src.rows))

dsize和fx、fy不能同时为0。fx、fy是沿x轴和y轴的缩放系数;默认取0时,计算如下

fx=(double)dsize.width/src.colsfx=(double)dsize.width/src.cols
fy=(double)dsize.height/src.rowsfy=(double)dsize.height/src.rows

最优一个参数interpolation表示插值方式,有以下几种:
INTER_NEAREST - 最近邻插值
INTER_LINEAR - 线性插值(默认)
INTER_AREA - 区域插值
INTER_CUBIC - 三次样条插值
INTER_LANCZOS4 - Lanczos插值

INTER_NEAREST最近邻插值

目标如下的像素点为对应的最近的原图像的像素点。假设原图像大小为(s_height, s_width),目标图像大小为(d_height, d_width),那么高度和宽度的缩放比例为h_ratio = s_height/d_height,w_ratio=s_width/d_width。

对面目标图像像素:(x, y)其值等于原图像(x * w_ration, y * h_ration)处的值。

INTER_LINEAR 线性插值

默认使用。在使用最近邻插值时,得到的坐标未必是一个整数,例如
(xw_ration, yh_ration)=(10.5, 20.5),那么可能取得坐标点就有四种(10, 20)、(11, 20)、(10, 21)、(11, 21)。双线性插值,会把这四个坐标的像素值加权求和。
D(x, y) = S(j, k) * w1 + S(j+1, k) w2 + S(j+1,k+1) w3 + S(j, K+1) * w4,其中w为权值。权值大小和计算位置的小数部分有关。

CV_INTER_AREA:区域插值

区域插值分为3种情况。图像放大时类似于线性插值,图像缩小时可以避免波纹出现。

INTER_CUBIC 三次样条插值

使用4x4邻域内的像素双3次插值。

INTER_LANCZOS4 Lanczos插值

使用8×8像素邻域的Lanczos插值

举例

#include <string>

#include <opencv2/opencv.hpp>
#include <opencv2/imgproc/imgproc.hpp> int main(int argc, char* argv[]){
std::string path = "";
int resize_height = 256;
int resize_width = 256;
cv::Mat src = cv::imread(path);
cv::Mat dst;
imshow("src", src);
cv::resize(src, dst, cv::Size(resize_width, resize_height), (0, 0), (0, 0), cv::INTER_LINEAR);
imshow("dst", dst); cv::waitKey(0);
return 0;
}

最新文章

  1. MVC中的数据注解和验证
  2. 【转】js插件zClip实现复制到剪贴板功能
  3. struts的标签库出现Failed to load or instantiate TagExtraInfo class
  4. CentOS 6.5/6.6 安装(install)mysql 5.7 最完整版教程
  5. HTML5网站如何做到完全不需要jQuery
  6. Strong TLS configuration on servers
  7. com.mchange.v2.c3p0.ComboPooledDataSource
  8. Jquery中$.post()与$.get()区别
  9. 一款新型的智能家居WiFi选择方案——SimpleWiFi在无线智能家居中的应用
  10. 使用pillow生成分享图片
  11. System.Object简介
  12. JS判断当前设备类型
  13. MYSQL性能优化(3)
  14. CentOS7下安装caffe(包括ffmpeg\boost\opencv)
  15. BZOJ3956: Count
  16. DNS原理入门
  17. 搭建一个单纯学习hibernate的项目
  18. MySQL多线程备份工具mydumper 之 RDS外部实例迁移平台
  19. C++入门级 一
  20. oracle 11g各种下载地址

热门文章

  1. eclipse导出文件上传服务器
  2. hibernate的级联(hibernate注解的CascadeType属性)
  3. UIImage+PYJAnimatedGIF
  4. 3 循环语句——《Swift3.0从入门到出家》
  5. QtAV的编译方法
  6. BZOJ4755:[JSOI2016]扭动的回文串
  7. 监控mysql 脚本
  8. 【转】Jmeter MySQL数据库性能测试
  9. PL/SQL 训练05--游标
  10. List去重与排序