OpenCV 图片尺寸缩放——resize函数

简介: OpenCV 图片尺寸缩放——resize函数

OpenCV中的缩放:


如果要放大或缩小图片的尺寸,可以使用OpenCV提供的两种方法:


  1. resize函数,是最直接的方式;


  1. pyrUp,pyrDown函数,即图像金字塔相关的两个函数,对图像进行上采样和下采样的操作。关于上采样和下采样可以参考我的另一篇文章:https://blog.csdn.net/weixin_45525272/article/details/121446923


resize函数


函数原型:


void cv::resize( 
  InputArray _src, 
  OutputArray _dst, 
  Size dsize,
  double inv_scale_x = 0,
  double inv_scale_y = 0, 
  int interpolation = INTER_LINEAR 
)


参数说明:


  • src,输入图像,Mat类型即可;


  • dst,输出图像,当其非零时,有着dsize(第三个参数)的尺寸或者有src.size()计算出来;


  • dsize,输出图像的大小。如果它等于0,由下式计算:


 dsize = Size( round(fx*src.cols, round(fy*src.rows)));
其中fx,fy,dsize都能不为0


  • fx,沿水平轴的缩放系数,默认值为0,且等于0时,由下式计算:


inv_scale_x = (double)dsize.width/ssize.width;


  • fy,沿垂直轴的缩放系数,默认值为0,且等于0时,由下式计算:


inv_scale_y = (double)dsize.height/ssize.height;


  • interpolation,用于指定插值方式,默认值为INTER_LINEAR(线性插值),可选插值方式如下:


image.png


注意:要缩小图像,一般情况下用INTER_AREA来插值;而若要放大图像,一般情况下用INTER_CUBIC(效率不高,不推荐)或INTER_LINEAR(效率高,推荐)


代码案例



#include <iostream>
#include <math.h>
#include <opencv2/opencv.hpp>
#include<opencv2/highgui.hpp>
#include <opencv2/highgui/highgui_c.h>  
using namespace cv;
using namespace std;
int main() {
  // 载入原图
  Mat srcImage = imread("./test2.jpg");
  Mat temImage, dstImage1, dstImage2, dstImage3, dstImage4; // 临时变量和目标图的定义
  temImage = srcImage;
  // 显示原图
  imshow("【原始图】", srcImage);
  //进行尺寸调整操作
  resize(temImage, dstImage1, Size(temImage.cols / 2, temImage.rows / 2), (0, 0), (0, 0), 3);
  resize(dstImage1, dstImage2, Size(dstImage1.cols / 2, dstImage1.rows / 2), (0, 0)(0, 0), 3);
  resize(srcImage, dstImage3, Size(srcImage.cols * 2, srcImage.rows * 2), (0, 0)(0, 0), 1);
  resize(dstImage3, dstImage4, Size(dstImage3.cols * 2, dstImage3.rows * 2), (0, 0)(0, 0), 1);
  // 显示效果图
  imshow("【效果图一:原图缩小两倍】", dstImage1);
  imshow("【效果图二:效果一缩小两倍】", dstImage2);
  imshow("【效果图三:原图放大两倍】", dstImage3);
  imshow("【效果图四:效果三放大两倍】", dstImage4);
  waitKey(0);
  return 0;
}
相关文章
|
9月前
|
监控 API 计算机视觉
OpenCV这么简单为啥不学——1.3、图像缩放resize函数
OpenCV这么简单为啥不学——1.3、图像缩放resize函数
96 0
|
9月前
|
人工智能 Linux API
OpenCV这么简单为啥不学——1.1、图像处理(灰度图、模糊图片、GaussianBlur函数、提取边缘、边缘膨胀、边缘细化)
OpenCV这么简单为啥不学——1.1、图像处理(灰度图、模糊图片、GaussianBlur函数、提取边缘、边缘膨胀、边缘细化)
126 0
|
4月前
|
算法 计算机视觉
Opencv学习笔记(六):cv2.resize函数的介绍
这篇文章介绍了OpenCV库中cv2.resize函数的使用方法,包括其参数、插值方式选择以及实际代码示例。
732 1
Opencv学习笔记(六):cv2.resize函数的介绍
|
4月前
|
计算机视觉
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
这篇文章详细介绍了OpenCV库中的图像二值化函数`cv2.threshold`,包括二值化的概念、常见的阈值类型、函数的参数说明以及通过代码实例展示了如何应用该函数进行图像二值化处理,并展示了运行结果。
922 0
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
|
6月前
|
计算机视觉
OpenCV滑动条(createTrackbar()函数)如何在多个维度进行同步调整?
这篇文章介绍了如何在OpenCV中使用`createTrackbar()`函数创建多个滑动条以同步调整图像的多个维度(如亮度和对比度),通过将不同滑动条的回调函数合并为一个,确保它们在同一图像基础上进行调整。
|
7月前
|
机器学习/深度学习 XML 计算机视觉
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,它提供了大量的函数和工具,用于处理图像和视频数据。
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,它提供了大量的函数和工具,用于处理图像和视频数据。
|
9月前
|
编解码 物联网 计算机视觉
【OpenCV】—图像金子塔与图片尺寸缩放
【OpenCV】—图像金子塔与图片尺寸缩放
|
9月前
|
计算机视觉
【OpenCV】图片尺寸放缩示例程序
【OpenCV】图片尺寸放缩示例程序
|
9月前
|
监控 算法 Serverless
OpenCV这么简单为啥不学——1.12、使用ssim函数对两张照片进行相似度分析
OpenCV这么简单为啥不学——1.12、使用ssim函数对两张照片进行相似度分析
185 0
|
9月前
|
监控 API 计算机视觉
OpenCV这么简单为啥不学——1.6、图像旋转与翻转(rotate函数、imutils环境安装、imutils任意角度旋转)
OpenCV这么简单为啥不学——1.6、图像旋转与翻转(rotate函数、imutils环境安装、imutils任意角度旋转)
99 0