OpenCV 图形API(29)图像滤波-----GMat类

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

算法描述

cv::GMat 是 OpenCV 的 G-API 模块中的一个核心类,用于定义计算图中的数据节点。G-API 是 OpenCV 中的一个模块,旨在通过定义高效、可优化的图像处理管道来加速图像处理任务。cv::GMat 类似于传统 OpenCV 中的 cv::Mat,但它不是直接存储图像数据,而是表示计算图中的一个操作或节点。

主要特性

  • 计算图节点:cv::GMat 表示 G-API 计算图中的一个输入或中间结果。它不直接存储图像数据,而是代表一个将要执行的操作。

  • 链式调用:可以使用一系列的图像处理函数(如滤波器、形态学操作等)对 cv::GMat 对象进行操作,形成一个链式调用模式,构建复杂的图像处理流程。

  • 编译与执行:一旦定义了计算图,可以通过 cv::GComputation 来编译和执行这些图。这允许对整个图像处理流程进行优化和加速。

常见成员函数

虽然 cv::GMat 本身没有太多成员函数,但它是许多 G-API 图像处理函数的输入或输出类型。以下是一些常见的基于 cv::GMat 的操作:

创建 GMat 对象

通常不需要直接创建 cv::GMat 对象,它们通常是作为输入参数传入或通过其他 G-API 函数生成。

cpp 复制代码
cv::GMat in; // 定义一个GMat对象作为输入

图像处理操作

你可以对 cv::GMat 对象应用各种图像处理操作,例如:

滤波:

cpp 复制代码
auto blurred = cv::gapi::boxFilter(in, CV_8U, cv::Size(5, 5));

形态学操作:

cpp 复制代码
auto dilated = cv::gapi::dilate3x3(in);

颜色空间转换:

cpp 复制代码
auto gray = cv::gapi::cvtColor(in, cv::COLOR_BGR2GRAY);

编译和执行计算图

使用 cv::GComputation 来编译和执行包含 cv::GMat 节点的计算图:

cpp 复制代码
cv::GComputation comp(cv::GIn(in), cv::GOut(dilated));
cv::Mat result;
comp.apply(src_mat, result, cv::compile_args(cv::gapi::kernels()));

核心概念

cv::GMat 类在 G-API 计算图中代表图像或张量数据。它本身并不存储任何实际的数据,而是描述了操作之间的功能关系,这些操作会消费和生成 GMat 对象。理解 cv::GMat 的本质有助于更好地利用 G-API 进行高效的图像处理。

  • 计算图中的节点:

    cv::GMat 作为计算图中的一个节点存在,表示某个图像处理操作的输入或输出。它并不直接存储像素数据,而是定义了如何通过一系列的操作来处理图像数据。

  • 与 cv::Mat 和 cv::UMat 的关系:

    cv::GMat 是 cv::Mat 和 cv::UMat 的虚拟对应物,但它并不意味着 G-API 内部使用 cv::Mat 或 cv::UMat 来表示 cv::GMat 对象。实际上,cv::GMat 的内部数据表示可能依赖于特定的后端实现,甚至可以被优化掉以提高性能。

  • 无数据存储:

    cv::GMat 本身不存储任何数据。它的主要作用是定义图像处理管道中的各个步骤以及这些步骤之间的依赖关系。实际的数据处理是在执行阶段完成的,通常由 G-API 后端负责。

结论

  • cv::GMat:用于在 G-API 计算图中表示图像或张量数据,但不存储实际数据。
  • 计算图:通过 cv::GMat 对象和一系列图像处理函数构建的高效图像处理管道。
  • 编译与执行:通过 cv::GComputation 编译计算图并在运行时执行,支持多种后端优化。
相关推荐
geneculture5 分钟前
基于融智学框架的领军人才实训实操示范基地建设: 课题、课程与项目的系统工程(人机三双协同即人机双脑双智双语协同)
人工智能·融智学的重要应用·哲学与科学统一性·融智时代(杂志)·序位逻辑的实例化·人机三双协同
key_3_feng5 分钟前
智能体 Loop 工程:循环架构与状态机
人工智能·loop·智能体
冬奇Lab6 分钟前
Code Agent 解剖(08):一个任务太复杂,怎么拆给子 agent 做?
人工智能·开源
冬奇Lab6 分钟前
开源项目第195期:OpenTelemetry Demo(Astronomy Shop)— 官方出品的分布式系统可观测性实战教材
人工智能·开源·前端工程化
海兰8 分钟前
【原理】OpenClaw Agent 运行时回顾一文清
人工智能·agent
民乐团扒谱机8 分钟前
【微实验】物理启发神经网络(PINN):当AI学会遵守物理定律(附matlab代码))
人工智能·神经网络·matlab
极客互动API21 分钟前
企业微信 iPad 协议消息接口开发:文本 / 图片 / 群发消息的统一封装
人工智能·ios·微信·机器人·企业微信·ipad
达子66627 分钟前
AI训练师图解_6.1_6.2_五大行业应用_NLP
人工智能·自然语言处理
新知图书1 小时前
11.4 基于扣子编程的实现过程(AI 数据质检工作流)
人工智能·agent·ai agent·智能体
YHL1 小时前
🚀 端侧 AI DEEPSEEK-R1-WEBGPU 项目实战(二):封装进度条组件,看懂 React 事件与组件树
人工智能