在 Python 中将 OpenCL 加速函数与 OpenCV3 结合使用
Using OpenCL accelerated functions with OpenCV3 in Python
OpenCV3 引入了它的 T-API(透明 API),这让用户可以使用 GPU(或其他支持 OpenCL 的设备)加速的功能,我正在努力寻找如何利用 Python.
在 C++ 中,当您使用 UMat
而不是 Mat
对象时,有像 ocl::setUseOpenCL(true);
这样的调用可以启用 OpenCL 加速。但是我没有找到 Python.
的任何文档
是否有人有关于如何在 Python 中使用 OpenCV3 实现 OpenCL 加速的示例代码、链接或指南?
更新:
经过进一步挖掘,我在 modules/core/include/opencv2/core/ocl.hpp
中找到了这个:
CV_EXPORTS_W bool haveOpenCL();
CV_EXPORTS_W bool useOpenCL();
CV_EXPORTS_W bool haveAmdBlas();
CV_EXPORTS_W bool haveAmdFft();
CV_EXPORTS_W void setUseOpenCL(bool flag);
CV_EXPORTS_W void finish();
我设法从 Python:
print(cv2.ocl.haveOpenCL())
cv2.ocl.setUseOpenCL(True)
print(cv2.ocl.useOpenCL())
它产生以下输出:
True
True
但是它仍然运行相同,我想我仍然没有使用 OpenCL,因为我在 Python 中没有使用 UMat。
根据 this issue 目前仍然缺乏对这个功能的支持,但是 "in progress",我会在更多可用时更新。
信息更新
对于那些看到这个的人,OpenCL for OpenCV python 版本已经实现
2016 年 10 月 6 日
更多信息
想了解更多可以看看这个问题:T-API python support implemented #6078
OpenCV 3.2 及更高版本支持透明 API。这是一个示例代码。
import cv2
img = cv2.UMat(cv2.imread("image.jpg", cv2.IMREAD_COLOR))
imgUMat = cv2.UMat(img)
gray = cv2.cvtColor(imgUMat, cv2.COLOR_BGR2GRAY)
gray = cv2.GaussianBlur(gray, (7, 7), 1.5)
gray = cv2.Canny(gray, 0, 50)
cv2.imshow("edges", gray)
cv2.waitKey();
找到更多详细信息
OpenCV3 引入了它的 T-API(透明 API),这让用户可以使用 GPU(或其他支持 OpenCL 的设备)加速的功能,我正在努力寻找如何利用 Python.
在 C++ 中,当您使用 UMat
而不是 Mat
对象时,有像 ocl::setUseOpenCL(true);
这样的调用可以启用 OpenCL 加速。但是我没有找到 Python.
是否有人有关于如何在 Python 中使用 OpenCV3 实现 OpenCL 加速的示例代码、链接或指南?
更新:
经过进一步挖掘,我在 modules/core/include/opencv2/core/ocl.hpp
中找到了这个:
CV_EXPORTS_W bool haveOpenCL();
CV_EXPORTS_W bool useOpenCL();
CV_EXPORTS_W bool haveAmdBlas();
CV_EXPORTS_W bool haveAmdFft();
CV_EXPORTS_W void setUseOpenCL(bool flag);
CV_EXPORTS_W void finish();
我设法从 Python:
print(cv2.ocl.haveOpenCL())
cv2.ocl.setUseOpenCL(True)
print(cv2.ocl.useOpenCL())
它产生以下输出:
True
True
但是它仍然运行相同,我想我仍然没有使用 OpenCL,因为我在 Python 中没有使用 UMat。
根据 this issue 目前仍然缺乏对这个功能的支持,但是 "in progress",我会在更多可用时更新。
信息更新
对于那些看到这个的人,OpenCL for OpenCV python 版本已经实现
2016 年 10 月 6 日
更多信息
想了解更多可以看看这个问题:T-API python support implemented #6078
OpenCV 3.2 及更高版本支持透明 API。这是一个示例代码。
import cv2
img = cv2.UMat(cv2.imread("image.jpg", cv2.IMREAD_COLOR))
imgUMat = cv2.UMat(img)
gray = cv2.cvtColor(imgUMat, cv2.COLOR_BGR2GRAY)
gray = cv2.GaussianBlur(gray, (7, 7), 1.5)
gray = cv2.Canny(gray, 0, 50)
cv2.imshow("edges", gray)
cv2.waitKey();
找到更多详细信息