当前位置: 首页 > news >正文

OpenCV几何图像变换(8)调整图像大小的函数resize()的使用

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

resize 函数调整图像 src 的大小,使其缩小或放大至指定的大小。需要注意的是,初始的 dst 类型或大小不被考虑。相反,大小和类型是从 src, dsize, fx, 和 fy 推导出来的。如果你想调整 src 的大小,使其适合预创建的 dst,你可以按照以下方式调用函数:

// 明确指定 dsize = dst.size(); fx 和 fy 将从该值计算得出。
resize(src, dst, dst.size(), 0, 0, interpolation);

如果你想要在每个方向上将图像缩小一半,你可以按照以下方式调用函数:

// 指定 fx 和 fy,并让函数计算出目标图像的大小。
resize(src, dst, Size(), 0.5, 0.5, interpolation);

为了缩小图像,通常使用 INTER_AREA 插值方法会看起来最好,而为了放大图像,通常使用 INTER_CUBIC(较慢)或 INTER_LINEAR(较快但仍看起来不错)插值方法会看起来最好。

函数原型


void cv::resize	
(InputArray 	src,OutputArray 	dst,Size 	dsize,double 	fx = 0,double 	fy = 0,int 	interpolation = INTER_LINEAR 
)		

参数

  • 参数 src 输入图像。
  • 参数dst 输出图像;它具有 dsize(当非零时)的大小或从 src.size(), fx, 和 fy 计算出的大小;dst 的类型与 src 相同。
  • 参数dsize 输出图像的大小;如果它等于零(在Python中为 None),则计算为: dsize = Size(round(fx*src.cols), round(fy*src.rows)) \texttt{dsize = Size(round(fx*src.cols), round(fy*src.rows))} dsize = Size(round(fx*src.cols), round(fy*src.rows))或者 fx 和 fy 必须是非零的。
  • 参数fx 沿水平轴的缩放比例;当它等于0时,计算为 (double)dsize.width/src.cols \texttt{(double)dsize.width/src.cols} (double)dsize.width/src.cols
  • 参数fy 沿垂直轴的缩放比例;当它等于0时,计算为 (double)dsize.height/src.rows \texttt{(double)dsize.height/src.rows} (double)dsize.height/src.rows
  • 参数interpolation 插值方法,参见 InterpolationFlags。

代码示例


#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>using namespace cv;int main(int argc, char** argv)
{// 读取图像Mat image = imread("/media/dingxin/data/study/OpenCV/sources/images/fruit_small.jpg", IMREAD_COLOR);if (image.empty()) {std::cerr << "Error: Could not open or find the image." << std::endl;return -1;}// 设置输出图像的大小Size dsize(300, 300); // 输出图像的宽度和高度// 创建输出图像Mat resizedImage;// 调整图像大小resize(image, resizedImage, dsize, 0, 0, INTER_LINEAR);// 显示结果namedWindow("Original Image", WINDOW_NORMAL);imshow("Original Image", image);namedWindow("Resized Image", WINDOW_NORMAL);imshow("Resized Image", resizedImage);waitKey(0);return 0;
}

运行结果

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 学懂C++(四十三):深入剖析现代C++设计模式:从常用经典到前沿的全面解析
  • 有限差分学习笔记
  • Cortex-A7的GIC(通用中断控制器):中断处理状态机
  • 知识图谱用于推荐系统问题
  • odoo SyntaxWarning: invalid escape sequence ‘\w‘
  • Java nio pipe 相似的 api
  • Linux系统中使用socket编程进行网络通信
  • 多维系统下单点登录之整理解决方案
  • 数字虚拟人原理
  • 百日筑基第六十二天-持续集成和持续交付的 pipeline 概念
  • NSSCTF练习记录:[SWPUCTF 2021 新生赛]ez_rsa
  • 分布式数据一致性小结
  • Spring Boot 应用中注册和使用 Filter
  • js怎样改变元素的内容、属性、样式?
  • GATK ReadsPathDataSource类介绍
  • 深入了解以太坊
  • 【面试系列】之二:关于js原型
  • axios 和 cookie 的那些事
  • C++入门教程(10):for 语句
  • FineReport中如何实现自动滚屏效果
  • jdbc就是这么简单
  • Just for fun——迅速写完快速排序
  • nodejs调试方法
  • php ci框架整合银盛支付
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • React Native移动开发实战-3-实现页面间的数据传递
  • Redux 中间件分析
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 多线程 start 和 run 方法到底有什么区别?
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 前端js -- this指向总结。
  • 详解NodeJs流之一
  • 原生js练习题---第五课
  • UI设计初学者应该如何入门?
  • ​​​【收录 Hello 算法】10.4 哈希优化策略
  • #ifdef 的技巧用法
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (2020)Java后端开发----(面试题和笔试题)
  • (floyd+补集) poj 3275
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (过滤器)Filter和(监听器)listener
  • (每日一问)计算机网络:浏览器输入一个地址到跳出网页这个过程中发生了哪些事情?(废话少说版)
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • *2 echo、printf、mkdir命令的应用
  • .libPaths()设置包加载目录
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .Net Winform开发笔记(一)
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .NET/C#⾯试题汇总系列:⾯向对象