![]() |
OpenCV 4.12.0
开源计算机视觉
|
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的各种特性和概念。