用OpenCV的函数resize()实现图像的缩放
Posted 昊虹算法
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用OpenCV的函数resize()实现图像的缩放相关的知识,希望对你有一定的参考价值。
图像处理开发需求、图像处理接私活挣零花钱,请加微信/QQ 2487872782
图像处理开发资料、图像处理技术交流请加QQ群,群号 271891601
在OpenCV中可以用函数resize()实现图像的缩放,下面介绍这个函数!
用函数resize()的原型如下:
C++: void resize( InputArray src,
OutputArray dst,
Size dsize,
double fx=0,
double fy=0,
int interpolation=INTER_LINEAR
)
参数意义如下:
src:源图像
dst:目标图像,即输出图像
dsize:输出图像的尺寸,当它为0的时候,由参数fx和fy决定其值,计算公式为:dsize = Size(round(fx*src.cols), round(fy*src.rows))
fx:水平方向上的缩放比例因子,当它为0的时候,其值由dsize决定,计算公式为:fx=(double)dsize.width/src.cols
fy:竖直方向上的缩放比例因子,当它为0的时候,其值由dsize决定,计算公式为:fy=(double)dsize.height/src.rows
interpolation:插值方式,有五种可选的插值方法,默认为“INTER_LINEAR”,五种插值方式如下:
INTER_NEAREST - 最近邻插值
INTER_LINEAR - 双线性插值(默认值)
INTER_AREA - 像素面积相关重采样。当缩小图像时,该方法可以避免波纹的出现。当放大图像时,类似于方法INTER_NEAREST
INTER_CUBIC - 双三次样条插值(4×4像素邻域内的双三次插值)
INTER_LANCZOS4 - (8×8像素邻域的Lanczos插值)
上面五种插值方式具体的数学原理,请大家去查阅相关书籍和文档,这里就不介绍了。
在OpenCV中用函数resize()实现图像缩放的示例代码如下:
代码中用到的图像下载链接:
https://pan.baidu.com/s/13gKSTVRWbpkHvrTMSYtwBg 提取码:po9z
//博主微信/QQ 2487872782
//有问题可以联系博主交流
//有图像处理需求也可联系博主
//图像处理技术交流QQ群 271891601
//opencv版本:OpenCV3.0
//VS版本:VS2013
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/types_c.h>
using namespace cv;
int main()
//读入图像
Mat srcImage = imread("F:/material/images/P0005-BaoXiaofeng-02.jpg");
Mat temImage, dstImage1, dstImage2;
temImage = srcImage;
//cv::Mat warpMat(cv::Size(2,3),CV_32F);
//显示原图
imshow("原图", srcImage);
//尺寸调整
resize(temImage, dstImage1, Size(temImage.cols / 2, temImage.rows / 2), 0, 0, INTER_LINEAR);
resize(temImage, dstImage2, Size(temImage.cols * 2, temImage.rows * 2), 0, 0, INTER_LINEAR);
imshow("缩小后的图像", dstImage1);
imshow("放大后的图像", dstImage2);
waitKey();
return 0;
运行结果如下图所示:
图像处理开发需求、图像处理接私活挣零花钱,请加微信/QQ 2487872782
图像处理开发资料、图像处理技术交流请加QQ群,群号 271891601
以上是关于用OpenCV的函数resize()实现图像的缩放的主要内容,如果未能解决你的问题,请参考以下文章