【问题标题】:Feasability of using OpenCV with Python over a GPU on Windows在 Windows 上通过 GPU 使用 OpenCV 和 Python 的可行性
【发布时间】:2020-11-06 13:55:23
【问题描述】:

我必须读取来自相机的图像,使用 OpenCV 添加一些形状,然后使用 Flask 将图像返回到网页。此应用程序在 Windows 10 中运行。详细步骤如下:

  • 从相机读取图像已完成。我有一个用于 C++ 库的 Python 包装器,它似乎运行良好。
  • 使用 OpenCV 添加形状已完成。我使用 Python 的 OpenCV 包装器。
  • 使用 Flask 返回图像是个问题。为此,我需要使用cv2.imencode(OpenCV Python 包装器)将图像从原始格式转换为 JPG 或 PNG 格式。然而,这会减慢要在网站上显示的视频的帧速率。

我在某些地方看到,OpenCV 可用于在 GPU (Nvidia GeForce RTX) 上执行一些操作。我在调用cv2.imencode 之前尝试过cv2.UMat,但没有区别。

这是我的问题:

  • 我应该尝试使用更多 Python 包装器(如 here 所述)吗?
  • 我应该开始学习 C++ 吗?我需要将所有现有应用程序从 Python 迁移到 C++ 还是只是一个包装器?这可以在几行内完成吗?

【问题讨论】:

  • 您是否在启用优化的情况下编译代码?如果没有,现在就这样做。
  • OpenCV 库?因为我所有的代码都在 Python 中(目前)。
  • 我是想说全部。
  • 我是 Windows 新手(在 Linux 上有 20 年的经验,但在 Windows 上一无所获)。我刚刚使用 Windows Installer 安装了所需的依赖项/库,python 应用程序不需要任何编译。如何启用优化?是GPU优化还是机器优化?

标签: python c++ windows opencv


【解决方案1】:

我终于用 GPU 标志和所需的 CUDA 标志编译了OpenCV-python。我花了数周时间安装所有需要的依赖项(图像库、视频库、Fortran、LINPAK、BLAS...)。

结果是对cv2.imencode 的调用更快了,我可以在 Windows 的资源管理器中看到 GPU 消耗增加。

【讨论】:

  • 你是如何使用 opencv 对 gpuMat 进行编码的?你能提供一个示例代码吗?我正在尝试做同样的事情。
  • 我最后没用Umat,用adecuate flags编译opencv就足够用GPU来做imencode方法了
  • 当我尝试使用 cv2.cuda_GpuMat 对图像进行编码时,我收到一条错误消息:Expected Ptr<:umat> for argument 'img'。
猜你喜欢
  • 1970-01-01
  • 2020-12-25
  • 2020-01-04
  • 1970-01-01
  • 1970-01-01
  • 2021-05-15
  • 2012-06-10
  • 1970-01-01
  • 2013-09-04
相关资源
最近更新 更多