将 GPU 与 opencv-python 结合使用

Use GPU with opencv-python

我正在尝试在 windows 10 上使用 opencv-python 和 GPU。

我使用 pip 安装了 opencv-contrib-python,它是 v4.4.0.42,我的计算机和路径中也有 Cuda。

无论如何,这是我正在尝试编译的(简单)代码:

import cvlib as cv
from cvlib.object_detection import draw_bbox

bbox, label, conf = cv.detect_common_objects(img,confidence=0.5,model='yolov3-worker',enable_gpu=True)

output_image = draw_bbox(img, bbox, label, conf)

首先,这是告诉我 tf 可以使用 cuda 的行:

2020-08-26 5:51:55.718555: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library cudart64_101.dll

但是当我尝试使用我的 GPU 分析图像时,会发生以下情况:

[ WARN:0] global C:\Users\appveyor\AppData\Local\Temp\pip-req-build-j8nxabm_\opencv\modules\dnn\src\dnn.cpp (1429) cv::dnn::dnn4_v20200609::Net::Impl::setUpNet DNN module was not built with CUDA backend; switching to CPU

有没有不用cmake安装opencv的方法解决这个问题? windows...

一团糟

这里的问题是随系统分发的 opencv 版本(在本例中为 Windows)未使用 Cuda[=18 编译=] 支持。因此,您不能在此版本中使用任何与 cuda 相关的功能。

如果你想要一个支持 cuda 的 opencv,你将不得不自己编译它(这在 windows 上可能很乏味)或者在某处找到一个预构建的。如果您想采用第一种解决方案,这里有一个 link 可以帮助您完成该过程:https://programming.vip/docs/compile-opencv-with-cuda-support-on-windows-10.html。请记住,这将需要您在此过程中安装一堆 SDK

对于那些可以得到同样问题的人。正如 Harry 提到的那样,不可能将 GPU 与来自 pip 的 opencv 一起使用,您必须使用 Cmake“手动”构建它(对于 windows)。

这有点棘手,但这里有很多教程可以帮助您。 我花了两天时间试图让 cvlib 工作,这就是为什么:cudnn.dll 当前可从 Nvidia 网站获得的其中一个被命名为:

Cudnn64_8.dll

和 opencv(或更准确地说是 tensorflow)需要

Cudnn64_7.dll

事实上,您只需将 8 替换为 7 即可! ;) 那是唯一困难的部分,我相信它来自 cmake 过程。

再次感谢哈利。

自从最初提出这个问题以来,情况似乎发生了一些变化:

来自https://github.com/opencv/opencv-python

选项 1 - 主要模块包:pip install opencv-python

选项 2 - 完整包(包含主要模块和 contrib/extra 模块):pip install opencv-contrib-python(检查 contrib/extra OpenCV 文档中的模块列表)==> https://docs.opencv.org/master/

遗憾的是,并非上面列出的所有模块似乎都在“完整包”中可用,例如。 cuda过滤器。如果有人知道更好,我将非常感谢了解更多。