![]() |
OpenCV 4.13.0
开源计算机视觉库 (Open Source Computer Vision)
|
OpenCV 图形 API (或 G-API) 是一个新的 OpenCV 模块,旨在使常规图像处理变得快速且可移植。这两个目标是通过引入一种新的基于图的执行模型来实现的。
G-API 是 OpenCV 中的一个特殊模块——与其他大多数主模块不同,它作为一个框架而不是某些特定的 CV 算法。G-API 提供了定义 CV 操作、使用它构建图(以表达式的形式)并最终为特定后端实现和运行操作的方法。
G-API 文档分为以下几章
G-API 的动机及其目标。
G-API 架构及其主要内部组件的总体概述。
了解如何在 G-API 中引入新操作并为各种后端实现它。
G-API 的低级实现细节,适合希望做出贡献的人。
核心 G-API 类、数据类型、后端等。
核心 G-API 操作——算术、布尔和其他矩阵操作;
图像处理函数:色彩空间转换、各种滤波器等。
视频处理功能。
绘图和合成功能
下面展示了一个非常基本的 G-API 管道示例
G-API 是一个独立的 OpenCV 模块,因此必须显式包含其头文件。main() 的前四行创建并初始化 OpenCV 的标准视频捕获对象,该对象从连接的摄像头或指定的文件获取视频帧。
接下来构建 G-API 管道。事实上,它是一系列在 cv::GMat 数据上调用的 G-API 操作。G-API 的重要方面是,此代码块只是对操作的声明,而不是操作本身。此时不进行任何处理,G-API 只跟踪哪些操作构成管道以及如何连接它。G-API 的*数据对象*(这里是 cv::GMat)用于连接操作。in 是一个*空*的 cv::GMat,表示这是计算的开始。
编写 G-API 代码后,将其捕获到调用图中,并实例化 cv::GComputation 对象。该对象接收输入/输出数据引用(在此示例中,分别为 in 和 out cv::GMat 对象),并根据 in 和 out 之间的所有数据流重建调用图。
cv::GComputation 是一个轻量级对象,因为它只是捕获哪些操作构成了一个计算。但是,它可以用于执行计算——在下面的处理循环中,每个捕获的帧(一个 cv::Mat input_frame)都传递给 cv::GComputation::apply()。
cv::GComputation::apply() 是一个多态方法,它接受可变数量的参数。由于此计算定义在一个输入和一个输出上,因此使用了一个特殊的 cv::GComputation::apply() 重载来传递输入数据并获取输出数据。
在内部,cv::GComputation::apply() 会为给定的输入参数编译捕获的图,并立即在数据上执行编译后的图。
通过这个例子可以勾勒出几个重要的概念
请参阅 教程和移植示例,了解更多关于各种 G-API 功能和概念的信息。