我正在尝试在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\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
有没有办法不用安装opencv就用cmake解决这个问题?Windows上一团糟。。
4条答案
按热度按时间myzjeezk1#
这里的问题是随您的系统(本例中为Windows)一起发布的 opencv 版本没有编译 Cuda 支持。因此,您不能在此版本中使用任何与cuda相关的函数。
如果你想拥有一个支持cuda的opencv,你要么自己编译(在windows上可能很繁琐),要么在某处找到一个预构建的。如果你想去第一个解决方案,这里有一个链接,可以帮助你的过程:https://programming.vip/docs/compile-opencv-with-cuda-support-on-windows-10.html。请记住,这将需要您在此过程中安装一堆 SDK。
goqiplq22#
自从最初提出这个问题以来,情况似乎发生了一些变化:
从https://github.com/opencv/opencv-python
选项1 -主要模块包:pip install opencv-python
可悲的是,并不是所有的模块上面列出的似乎是可用的“完整包”例如。过滤器如果有人知道更好的,我将非常感激了解更多。
yv5phkfx3#
对于那些谁可以得到同样的问题。正如Harry提到的,从pip中使用GPU和opencv是不可能的,你必须使用Cmake(用于Windows)“手动”构建它。
这是一个有点棘手,但有很多教程,这是在这里帮助你。我花了两天时间尝试让cvlib工作,这就是为什么:目前可从Nvidia网站获得的cudn.dll之一名为:
Cudnn64_8.dll
和opencv(或者更精确地说是tensorflow)需要
Cudnn64_7.dll
事实上你只需要用7代替8就可以了!;)这是唯一困难的部分,我相信它来自cmake过程。
再次感谢哈利。
3df52oht4#
有非官方的预制车轮可用,但CUDA版本数量有限(见OpenCV Python CUDA wheels)
由于每个轮子都必须针对特定版本的CUDA构建,因此仅支持OpenCV和CUDA的最新组合。