python - 如何在 python (Windows) 上的 openCV dnn 模块上使用 GPU 加速?

标签 python gpu opencv

我想使用opencv-python4.4对YOLOv3进行推理。但它默认使用CPU。我已阅读此说明here ,表示新版本opencv4.2.0已经支持GPU了。但该说明仅适用于 Ubuntu,但我的是 Windows10

我尝试过,您能指导我如何在 Wondows10、Python 中完成此操作吗?由于我直接使用,出现了错误:

cv::dnn::dnn4_v20191202::Net::Impl::setUpNet DNN module was not built with CUDA backend; switching to CPU

看来我必须手动编译opencv,但不是针对Cpp吗?但我只想在 python 上实现它。谁能给我一些指示吗?

最佳答案

您确实需要自己构建 OpenCV。

当您使用 OpenCV 的 Python 绑定(bind)时,OpenCV 库本身是用 C++ 而不是 Python 编写的。这也解释了 OpenCV 如何使用 CUDA(另一个 C++ 库)来访问 NVidia GPU。

您链接的说明来自与 OpenCV 无关的人,他承认存在反 Windows 偏见。这意味着这些说明对您没有用。

These instructions请涵盖 Windows 构建。

摘要:

  • 使用 Visual Studio 2019(Microsoft 最新的 C++ 编译器)和 CMake
  • 下载并安装 OpenCV
  • 下载并安装 CUDA 和 cuDNN
  • 下载并安装 Anaconda3 并将其用作默认 Python
  • 设置环境变量,以便 CMake 可以找到您已安装的库
  • 设置环境变量和选项,以便 CMake 知道您还需要 OpenCV 的 Python 绑定(bind)
  • 使用 CMake 为 Visual Studio 创建 .sln 文件
  • 在 Visual Studio 中打开 .sln 并构建它。
  • 这会生成您需要的 cv2.cp37-win_amd64.pyd 文件。

关于python - 如何在 python (Windows) 上的 openCV dnn 模块上使用 GPU 加速?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63778373/

相关文章:

python - OpenCV 找不到正确的 CUDA 版本

python - Django DecimalField 在保存时生成 "quantize result has too many digits for current context"错误

python - 我正在使用 python 3.9,但不知道如何在 Windows 10 中安装 pyaudio

parallel-processing - python : how to write this code to run on GPU?

python - 分布式 tensorflow 复制训练示例: grpc_tensorflow_server - No such file or directory

cuda - Windows 8 应用程序中的 GPU 计算 - 适用于 x86 和 ARM

opencv - 无法在Fedora 19上使用CUDA 5.5编译OpenCV 2.4.6

python - OpenCV cv2透视变换矩阵乘法

python - 如何在棋盘图像中找到空方 block ?

python - 根据另一个数组的元素从numpy数组中删除元素