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

OpenCV 图形API(78)图像与通道拼接函数-----调整图像大小的函数resize()

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

算法描述

调整图像大小。
该函数将图像 src 缩小或放大到指定的尺寸。
输出图像的大小将是 dsize(当 dsize 非零时),或者根据 src.size()、fx 和 fy 计算得出。输出图像的深度与输入图像相同。
如果你想将 src 调整为适配一个已经创建好的 dst 图像,你可以这样调用函数:

// 明确指定 dsize = dst.size(); fx 和 fy 将基于此计算。
resize(src, dst, dst.size(), 0, 0, interpolation);

如果你想在每个方向上以因子 2 来缩小图像,你可以这样调用:

// 指定 fx 和 fy,让函数自动计算目标图像的尺寸。
resize(src, dst, Size(), 0.5, 0.5, interpolation);

一般来说,缩小图像时使用 cv::INTER_AREA 插值效果最好;而放大图像时通常推荐使用 cv::INTER_CUBIC(质量高但较慢)或 cv::INTER_LINEAR(较快,效果也还可以)。
注意事项:
函数的文本 ID 是 “org.opencv.imgproc.transform.resize”。

函数原型

GMat cv::gapi::resize 
(const GMat &  	src,const Size &  	dsize,double  	fx = 0,double  	fy = 0,int  	interpolation = INTER_LINEAR 
) 		

参数

  • 参数 src:输入图像。

  • 参数 dsize:输出图像的尺寸;如果为零,则根据 fx 和 fy 计算得出:
    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))
    dsize 必须非零,或者 fx 和 fy 都必须非零。

  • fx:水平方向上的缩放因子;当为 0 时,将根据 dsize.width / src.cols 自动计算:
    (double)dsize.width/src.cols \texttt{(double)dsize.width/src.cols} (double)dsize.width/src.cols

  • fy:垂直方向上的缩放因子;当为 0 时,将根据 dsize.height / src.rows 自动计算:
    (double)dsize.height/src.rows \texttt{(double)dsize.height/src.rows} (double)dsize.height/src.rows

  • interpolation:插值方法,详见 cv::InterpolationFlags(例如 INTER_NEAREST, INTER_LINEAR, INTER_CUBIC, INTER_AREA 等)。

代码示例

include <opencv2/gapi.hpp>
#include <opencv2/gapi/core.hpp>
#include <opencv2/opencv.hpp>using namespace cv;
using namespace cv::gapi;int main()
{// 加载图像Mat src = imread( "/media/dingxin/data/study/OpenCV/sources/images/Lenna.png" );if ( src.empty() ){std::cerr << "无法加载图像!" << std::endl;return -1;}// 定义新的尺寸Size new_size( 320, 240 );  // 或者你可以设置为 (0, 0) 并使用 fx 和 fy// 创建一个 GComputation 对象来定义操作GMat in;GMat out = gapi::resize( in, new_size );// 执行操作Mat dst;GComputation resize_comp( GIn( in ), GOut( out ) );resize_comp.apply( gin( src ), gout( dst ) );// 显示结果imshow( "原始图像", src );imshow( "调整大小后的图像", dst );waitKey();return 0;
}

运行结果

在这里插入图片描述

http://www.xdnf.cn/news/4196.html

相关文章:

  • C# 方法(值参数和引用参数)
  • mysql 如何查询数据库链接日志
  • Spring 中四种常见初始化方法,对比 static {} 和 @PostConstruct 在并发,Spring 加载顺序大致为: JVM 加载类
  • 生成了一个AI算法
  • 网络安全的范式革命:从被动防御到 AI 驱动的主动对抗
  • 基于大模型的自然临产阴道分娩全流程预测与方案研究报告
  • 开个帖子记录一下自己学spring源码的过程
  • Spyglass:官方Hands-on Training(三)
  • 数据中台架构设计
  • c++类【发展】
  • 【全面解析】Poco C++ Libraries 模块详解与使用指南
  • UE5 使用插件进行Audio2face和UE5的实时链接并实时输出嘴型
  • 多模态训练与微调
  • 突破v0.dev对话限制的两种方法
  • k8s node 报IPVS no destination available
  • 19.第二阶段x64游戏实战-vector容器
  • 二叉树的最大深度(简单)
  • 标题:基于自适应阈值与K-means聚类的图像行列排序与拼接处理
  • LintCode第484题-交换数组两个元素,第9题-Fizz Buzz 问题,第46题-主元素,第50题数组剔除元素后的乘积
  • 超表面加工流程
  • 从零开始了解数据采集(二十二)——塑胶制品行业趋势分析案例
  • (leetcode) 力扣100 6.三数之和 (双指针)
  • 卷积神经网络的简单实战项目
  • 大模型——GraphRAG基于知识图谱+大模型技术构建的AI知识库系统
  • 怎样用 esProc 实现多数据库表的数据合并运算
  • 深入理解 Linux 阻塞IO与Socket数据结构
  • 《脑机接口与AI:如何让瘫痪患者用“意念”实现创作?》
  • 在 PyTorch 中借助 GloVe 词嵌入完成情感分析
  • 【Vue】组件自定义事件 TodoList 自定义事件数据传输
  • Spring Boot3 实现定时任务 每10分钟执行一次,同时要解决分布式的问题 区分不同场景