【发布时间】:2017-09-05 01:02:51
【问题描述】:
我刚刚按照http://www.pyimagesearch.com/2016/07/11/compiling-opencv-with-cuda-support/ 中的说明安装了带有 CUDA 支持的 OpenCV 3.2 编译 我只是想知道如何检查我的OpenCV在运行时是否使用了CUDA和GPU支持(我使用python2.7)
【问题讨论】:
标签: python-2.7 opencv
我刚刚按照http://www.pyimagesearch.com/2016/07/11/compiling-opencv-with-cuda-support/ 中的说明安装了带有 CUDA 支持的 OpenCV 3.2 编译 我只是想知道如何检查我的OpenCV在运行时是否使用了CUDA和GPU支持(我使用python2.7)
【问题讨论】:
标签: python-2.7 opencv
正如您在link you gave 中看到的那样,您始终可以通过在python 控制台上输入以下内容来检查您是否已正确安装CUDA。
print(cv2.getBuildInformation())
如果您有 CUDA 支持,您将在打印文本中看到 Use CUDA: YES (version)。
那么你就可以在cv2.cuda模块中使用opencv cuda命令了。
但正如那个教程中所说的那样,CUDA 目前在 python 中不存在支持。 (由于这些教程在 OpenCV python 上,您会感到困惑,这是否会增加 CUDA 对 python 的支持。但它会不会..)
此外,在支持 GPU 的 CUDA 环境中,我们可以对 OpenCV 进行许多编译时优化,使其能够利用 GPU 进行更快的计算(但主要用于 C++ 应用程序,对于Python,至少目前是这样)。
但正如this answer 中所述,您可以在 python 上获得OpenCL 支持。如在this 文档中,
开放计算语言 (OpenCL) 是一种用于编写跨异构平台(包括 CPU、GPU、DSP 等)运行的代码的开放标准。
编辑 1:
您可以做的另一件事是,您可以为OpenCV C++ 中的每个GPU 方法编写python 包装器,并通过python 调用这些方法。我不建议这样做,因为这将始终在GPU 内存和RAM 之间复制图像和其他数据,从而导致性能不佳。有时这会比单独使用CPU 花费更多时间。
您可以做的另一件事是在C++ 中使用GPU 编写您需要执行的整个函数,并为该函数编写一个python 包装器。这比以前的方法要好得多,但你需要知道C++。
还有更好的方法来做到这一点..
【讨论】: