缺少 OpenCV 透明 API UMat

Posted

技术标签:

【中文标题】缺少 OpenCV 透明 API UMat【英文标题】:OpenCV Transparent API UMat is missing 【发布时间】:2019-11-20 15:15:22 【问题描述】:

我尝试在我的桌面 Java 应用程序中使用 OpenCV Transparent API UMat 类进行硬件加速,但我找不到 UMat 类实现。我正在使用OpenCV version 4.1,其中T-API java 绑定据说从version 3.0 可用,如here 所说:

引入了T-API(透明API),这是透明GPU 使用 OpenCL 的加速层。它不添加任何编译时间或 OpenCL 的运行时依赖项。当 OpenCL 可用时,它会被检测到 并使用,但它可以在编译时或运行时禁用。它 涵盖约 100 个 OpenCV 函数。这项工作是按合同完成的 AMD 和英特尔公司的慷慨支持。

T-API 是否已弃用?如果是,用什么替代它? 顺便问一下,OpenCV Graph API G-API 是什么?它是 T-API 的替代品吗?

【问题讨论】:

【参考方案1】:

让我们分解这个问题。

T-API 是否已弃用?如果是,用什么代替它?

不,T-API 并未被有效弃用。你可以看到here,T-API 在 OpenCV 4.1.2 版本标签下仍然有效。 您的主要问题是 T-API 没有实际的 Java 包装器,因为我们可以看到 at this answer 并且在 @ 下看不到 UMat 实现987654323@.

顺便问一下,什么是 OpenCV Graph API G-API?它是 T-API 的替代品吗?

再次查看the docs,我们读到:

OpenCV 3.0 引入了透明 API(或 T-API),它允许将 OpenCV 函数调用透明地卸载到 OpenCL 设备,并使用 cv::UMat 保存主机/设备数据传输——这是向前迈出的一大步。然而,T-API 是一个动态 API——用户代码仍然不受约束,OpenCL 内核以任意顺序排队,从而消除了进一步的流水线级优化潜力。 G-API 为 OpenCV 4.0 带来了隐式图模型。图模型捕获管道中的所有操作及其数据依赖关系,从而为 G-API 框架提供额外信息以进行管道级优化。

据记载,G-API 似乎并不是“替代品”,而更像是对 OpenCV 硬件加速计划的改进。 G-API 不仅对无组织的内核进行了一些优化操作,还为较新版本的 OpenCV 带来了面向管道/图形的范例。

【讨论】:

以上是关于缺少 OpenCV 透明 API UMat的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV 3.1 警告和使用 Umat 时崩溃

OpenCV OpenCL 线程安全 - 死锁(将 cv::Mat 更改为 UMat)

OpenCV 缺少头文件

OpenCV - 缺少 dll

OpenCV 3.0 缺少库

OpenCV 3.0.0 JAR 中缺少 HighGUI