OpenCV 4.11.0
开源计算机视觉
|
OpenCV 图API(或G-API)是OpenCV的一个新模块,旨在使常规图像处理更快、更便携。这两个目标是通过引入一种新的基于图的执行模型来实现的。
G-API是OpenCV中的一个特殊模块——与大多数其他主要模块不同,它充当框架而不是某种特定的计算机视觉算法。G-API提供了一种定义计算机视觉操作、使用它构建图(以表达式的形式),以及最终为特定后端实现和运行操作的方法。
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 功能和概念的更多信息。