我刚刚按照http://www.pyimagesearch.com/2016/07/11/compiling-opencv-with-cuda-support/的指示安装了支持CUDA的OpenCV 3.2。现在我想知道如何在运行时(我使用Python 2.7)检查我的OpenCV是否正在使用CUDA和GPU加速。
我刚刚按照http://www.pyimagesearch.com/2016/07/11/compiling-opencv-with-cuda-support/的指示安装了支持CUDA的OpenCV 3.2。现在我想知道如何在运行时(我使用Python 2.7)检查我的OpenCV是否正在使用CUDA和GPU加速。
正如您在提供的链接中所看到的,您可以通过在python
控制台上键入以下内容来检查是否正确安装了CUDA
。
print(cv2.getBuildInformation())
如果您有CUDA支持,您将会在打印的文本中看到Use CUDA: YES (version)
。
然后您可以在cv2.cuda
模块中使用opencv cuda命令。
但是如该教程所述,目前Python中不支持CUDA
。 (由于这些教程是关于OpenCV python
的,您可能会困惑这是否会为python
添加CUDA
支持。 但它不会..)
此外,在启用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++
。
有更好的方法来做这件事...