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

news2024/11/13 20:30:10
  • 操作系统: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.coloradmin.cn/o/2068931.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解决Jasper Studio报表工具中预览正常显示,但部署到服务器上面无法正常显示的问题

目录 1.1、错误描述 1.2、解决方案 1.1、错误描述 之前有遇到过一个Jasper Studio报表开发相关的问题&#xff0c;这里记录一下&#xff0c;方便其他小伙伴可以快速解决问题。问题是这样的&#xff1a;当我在Jasper Studio报表工具里面设计好样式之后&#xff0c;预览报表发…

[论文阅读] mobile aloha实验部分

DP:[1] CHI C, FENG S, DU Y, et al. Diffusion Policy: Visuomotor Policy Learning via Action Diffusion[J]. 2023. Diffusion Policy: Visuomotor Policy Learning via Action Diffusion精读笔记&#xff08;一&#xff09;-CSDN博客 VINN:[1] PARI J, SHAFIULLAH N, ARU…

视频达人的秘密武器:全能型剪辑软件深度剖析

剪辑视频&#xff0c;作为视频创作过程中的关键环节&#xff0c;其重要性不言而喻。无论是专业影视制作团队&#xff0c;还是热衷于Vlog创作的个人&#xff0c;都离不开一款强大且易用的视频剪辑工具。今天&#xff0c;就让我们一起踏上一场探索之旅&#xff0c;对市面上的视频…

java基础 之 关键字static

文章目录 前言1、特征2、修饰变量3、修饰方法4、修饰代码块优缺点应用场景代码理解 前言 本文主要是从类与对象的方向来讲&#xff0c;所以在文章开始前&#xff0c;我们先理解一下类和对象 类是一个模板&#xff0c;对象是一个实例。 如【手机】是一个类&#xff08;一个模板…

MySQL系统性的学习--基础

学习资料是黑马的mysql课程 Mysql概述 相关概念 数据模型 关系型数据库 数据模型 SQL SQL通用语法 SQL分类 DDL 数据库操作 表操作 查询 创建 数据类型 修改/删除 DML 添加数据INSERT 修改数据UPDATE 删除数据DELETE DQL 基础查询 条件查询 聚合函数 分组查询 排序查询 分…

Otterctf 2018 内存取证 (复现)

题目地址: https://otterctf.com/challenges 1 - What the password? 描述:you got a sample of ricks PCs memory. can you get his user password? 首先查看一下镜像的信息 python2 vol.py -f /home/kali/Desktop/OtterCTF.vmem imageinfo 题目描述需要获取密码, 使用mi…

el-form中使用v-model和prop实现动态校验

如何在Vue的el-form中使用v-model和prop实现动态校验&#xff0c;包括多个变量控制校验、数组循环校验和字段级条件显示。通过实例演示了如何配合rules和自定义验证函数来确保表单的完整性和有效性。 公式&#xff1a; 动态校验项的v-model的绑定值 el-form的属性 :model的值 …

PCSE不同播种时间的对比

目录 简介对比图源代码简介 设置为2022年10月15日播种,然后每隔5天往后播种一次,然后探究播种时间对于作物各个长势的影响 对比图 源代码 import sys, os import matplotlib from matplotlib import style matplotlib.style.use("seaborn-whitegrid") import ma…

ST 表算法

ST 表 ST 表&#xff0c;主要思想是空间换时间&#xff0c;用于解决可重复贡献问题和 RMQ 问题。 可重复贡献问题 指某个运算 o p op op&#xff0c;有 x o p x x x\ op\ x\ \ x x op x x 。例如 m a x ( x , x ) x m i n ( x , x ) x g c d ( x , x ) x max(x,x)x\…

Linux基础环境开发工具gcc/g++ make/Makefile git

1.Linux编译器-gcc/g使用 1. 预处理&#xff08;进行宏替换) 预处理功能主要包括宏定义,文件包含,条件编译,去注释等。 预处理指令是以#号开头的代码行。 实例: gcc –E hello.c –o hello.i 选项“-E”,该选项的作用是让 gcc 在预处理结束后停止编译过程。 选项“-o”是指目标…

UE基础 —— Components

目录 Component Instancing Instanced Static Mesh Component Instanced Static Mesh Differences of an ISM and a Static Mesh Component Hierarchical Instanced Static Mesh Instancing Systems Working with ISMs Prefabrication Custom Data Creating and Edit…

吴恩达机器学习课后作业-04神经网络

神经网络 对y进行独立热编码处理&#xff08;one-hot处理&#xff09;序列化权重参数前向传播代价函数反向传播神经网络优化可视化隐藏层 对y进行独立热编码处理&#xff08;one-hot处理&#xff09; def one_hot_encoder(raw_y):result[]for i in raw_y:#1-10y_tempnp.zeros(1…

网络编程之初识

目录 ​前言 发展史 网络互连 局域网(LAN) 广域网(WAN) 网络通信基础 IP地址 特殊IP地址 端口号 网络协议 协议的作用 五元组 协议分层 含义 OSI七层模型 TCP/IP五层协议 网络设备所在分层 封装和分用 发送方 接收方 前言 在这个科技发达的时代&#xff0…

初识C语言指针(3)

目录 1. 数组名的理解 2. 使⽤指针访问数组 3. ⼀维数组传参的本质 4. 冒泡排序 5. 二级指针 6. 指针数组 7. 指针数组模拟⼆维数组 结语 1. 数组名的理解 对于数组名想必大家并不陌生&#xff0c;数组名就是该数组首元素的地址&#xff0c;设想有一个arr 数组。我们…

文本是否换行显示

多行文本 1、white-space: pre-wrap; 保留连续的空白符。在遇到换行符或 <br> 元素时&#xff0c;或者根据填充行框盒子的需要换行。 2、word-break: break-word; 如果单词太长而无法在当前行容纳&#xff0c;浏览器可以尝试在单词内部进行断行&#xff0c;以避免内容…

轻松获得ADSL代理服务

ADSL 代理服务接入常见问答 在当今激烈的网络爬虫与反爬虫斗争中&#xff0c;各大网站和应用程序采取的风险管理手段愈加严格&#xff0c;其中最常见的一种措施是 IP 封禁。 为了有效应对 IP 封禁带来的挑战&#xff0c;设置代理服务成为一种非常有效的解决方案。配置完代理后…

数论之高斯消元

高斯消元&#xff1a; 前置知识&#xff1a; 高斯消元五步骤法 枚举每一列c 找到绝对值最大的一行 将该行换到最上面&#xff08;第r行&#xff09; 将该行的第c列数字变为1 把该行下面的第c列数字全部变为0 代回求解 #include <bits/stdc.h>using namespace std;…

Linux LVM 详解

Linux LVM 详解 1. 简介 参考链接&#xff1a; https://blog.csdn.net/qq_35745940/article/details/119054949 https://blog.csdn.net/FP202530/article/details/125140176 &#x1f449; LVM&#xff08;Logical Volume Manager&#xff09;逻辑卷管理 是在硬盘分区和文件系…

面向对象02:构造器详解

本节内容视频链接&#xff1a;面向对象05&#xff1a;构造器详解_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV12J41137hu?p64&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5 构造器&#xff08;‌Constructor&#xff09;‌是一种特殊的方法&#xff0c;‌用于初始…

解决Intel-12代13代14代大小核调用导致VMware虚拟机性能低

0x01 设备信息 近期入手的是一台2023款 y9000p 游戏本&#xff0c;CPU为13500h 显卡为RTX4060。 0x02 VMware虚拟机遇到的性能问题 尤其是windows虚机明显感觉性能非常差&#xff0c;开几个网页都很卡。 我一度怀疑是CPU i5性能差&#xff0c;还没我的轻薄本运行速度快&…