从 python 加速 opencv?

问题描述

人们有没有成功地在 python/opencv 中加速视频(后期)处理?

我在(非 M1)MacBook Pro 上使用 brew 的 4.5.2。

我希望影响性能的两个“支柱”是:

  • 我使用 ndarray 类型作为 Mat(认),所以我不相信 算法可以利用 OpenCL 加速。
  • VideoCapture 看起来是实时读取(),所以我被限制为最高 30 fps 在 30 fps 源上处理。一些来源建议使用 FFMPEG, 即从源代码构建,将允许与处理器一样快地读取 可以运行。

我从在线搜索中看到的(因为我是后处理)建议使用并行处理,方法是将文件拆分为多个块并在单独的线程中读取。我可以看看。但我也想了解人们是否成功解决了我提出的两个问题。理想情况下,更快的阅读和处理将使我避免必须分块然后组合视频片段...

我最初尝试转换 Mat -> UMat 并没有明显的改进,尽管我可以看到 OpenCV 源为我正在使用的方法(undistort、cvtColor、calcopticalFlowFarneback 等)提供了 OpenCL 实现。 FWIW,对于 30 fps 的源,我得到

总结:

  1. 人们是否看到使用 UMat 而不是 Mat 来支持 OpenCL 的改进?
  2. 使用 FFMPEG 的自定义构建是否比使用 VideoCapture 的实时读取速度更快?
  3. 我没有想到的建议?

由于迭代速度的原因,我的意图是使用 python,所以我希望有一些简单的技巧来加快每次迭代的计算步骤。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)