Arq*_*rqu 7 python opencl opencv3.0
OpenCV3引入了它的T-API(透明API),使用户可以使用GPU(或其他支持OpenCL的设备)加速的功能,我很难找到如何利用Python进入的功能.
使用C++时,有些调用会ocl::setUseOpenCL(true);在您使用UMat而不是Mat对象时启用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();
Run Code Online (Sandbox Code Playgroud)
我设法从Python调用:
print(cv2.ocl.haveOpenCL())
cv2.ocl.setUseOpenCL(True)
print(cv2.ocl.useOpenCL())
Run Code Online (Sandbox Code Playgroud)
它产生以下输出:
True
True
Run Code Online (Sandbox Code Playgroud)
但是它仍然运行相同,我想我仍然没有使用OpenCL,因为我没有在Python中使用UMat.
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();
Run Code Online (Sandbox Code Playgroud)
更多细节可以在OpenCV 透明 API 中找到
对于那些看到这个的人来说,OpenCL for OpenCV python版本已经实现
截至 2016 年 10 月 6 日
有关更多信息,您可以查看此问题:T-API python support Implemented #6078