将GPU与opencv-python一起使用

时间:2020-08-26 16:11:34

标签: python python-3.x tensorflow opencv opencv4

我正在尝试在Windows 10上的GPU中使用opencv-python。

我使用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\1\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上一团糟...

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

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

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

选项 2 - 完整包(包含主模块和 contrib/额外模块):pip install opencv-contrib-python(检查 OpenCV 文档中的 contrib/额外模块列表)==> {{ 3}}

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

答案 2 :(得分:0)

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

这有点棘手,但是这里有很多教程可以帮助您。 我花了两天的时间尝试使cvlib正常运行,这就是为什么:从Nvidia网站上当前可用的cudnn.dll之一被命名为:

Cudnn64_8.dll

和opencv(或更精确地说是tensorflow)的需求

Cudnn64_7.dll

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

再次感谢哈里。