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

devtools/2024/10/20 15:48:48/
  • 操作系统: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;
}

运行结果

在这里插入图片描述


http://www.ppmy.cn/devtools/102437.html

相关文章

你见过这样的个性化AI助手吗?让AI助手跟搭积木一样,搭配出不一样的应用场景!

AI工具那么多&#xff0c;不符合我的场景怎么办&#xff1f; 在这个数字化飞速发展的时代&#xff0c;AI工具如星辰般璀璨&#xff0c;令人目不暇接。然而&#xff0c;面对如此众多的选择&#xff0c;如何找到一款真正适合自己的工具呢&#xff1f;今天&#xff0c;我将为你找…

Java笔试面试题AI答之集合(10)

文章目录 53. 为什么HashMap中String、Integer这样的包装类适合作为K &#xff1f;54. 如果使用Object作为HashMap的Key&#xff0c;应该怎么办呢 &#xff1f;55. HashMap为什么不直接使用hashCode()处理后的哈希值直接作为table的下标 &#xff1f;56. TreeMap和TreeSet 在排…

数字经济下的支付风控新策略:区块链积分系统

随着数字经济的蓬勃发展&#xff0c;支付安全和风险控制成为企业和个人交易中不可忽视的焦点。传统支付体系在处理大规模交易时&#xff0c;复杂的审核流程、严格的监管要求以及潜在的欺诈风险&#xff0c;往往导致交易延迟或冻结&#xff0c;不仅损害用户体验&#xff0c;还可…

【LLM之Data】SKYSCRIPT-100M论文阅读笔记

研究背景 随着短视频和短剧的兴起&#xff0c;自动化的剧本生成和短剧制作在影视行业中的需求逐渐增加。传统的剧本生成过程需要大量的人工干预&#xff0c;限制了其在规模和效率上的扩展性。当前的大型语言模型&#xff08;LLM&#xff09;在剧本生成方面展现出一定潜力&…

安卓WMS层面分析窗口的位置变化-安卓framework实战开发

背景&#xff1a; 在悬浮窗口开发过程中&#xff0c;窗口往往都不是铺满整个屏幕&#xff0c;一般都是一个小窗口&#xff0c;这个时候往往会加上一个自由拖动的功能&#xff0c;例如如下图所示&#xff1a; 毫秒表就可以上下自由移动&#xff0c;那么大家有没有想过这个自由…

美国高防服务器租用

美国高防服务器租用是指在美国选择具有专业防御能力的服务器进行租用&#xff0c;这些服务器专门配置了针对DDoS攻击和其他网络威胁的防护措施。下面将具体介绍美国高防服务器租用的几个重要方面&#xff0c;rak小编为您整理发布美国高防服务器租用考虑因素。 硬件配置 CPU性能…

资料下载 | 消费品行业PLM解决方案

前言 随着消费者对创新需求的迅速增加&#xff0c;全球竞争日益加剧&#xff0c;以及新兴品牌数量激增&#xff0c;所有类型的消费品品牌和零售商都需要在确保产品利润的同时向市场提供优质产品&#xff0c;从而保持领先地位。为了适应最新的消费者和市场趋势&#xff0c;消费品…

SOA通信中间件介绍(一)

一、通信中间件 在软件定义汽车中&#xff0c;应用程序之间的跨进程或跨核通信是一个需要解决的问题。模块化架构为开发人员提供了便利&#xff0c;但也引入了对通信中间件的需求。 在没有使用通信中间件的情况下&#xff0c;开发人员需要自己定义数据的格式、发送方和接收方…