在Python中使用OpenCL加速函数和OpenCV3

2024-05-29 04:04:21 发布

您现在位置:Python中文网/ 问答频道 /正文

OpenCV3引入了它的T-API(透明API),它让用户可以使用GPU(或其他支持OpenCL的设备)加速的函数,我正在努力寻找如何使用Python来利用它。

使用C++,调用^ {< CD1>}时,使用^ {< CD2>}而不是^ {< CD3>}对象时,可以启用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。


Tags: coreapitruecv2cvopenclboolprint
3条回答

根据this issue这项功能的支持目前仍然缺乏,但仍在“进行中”,我将在更多可用时更新。

信息更新

对于看到这一点的人来说,OpenCV的OpenCLpython版本已经被弹劾

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();

有关详细信息,请访问OpenCV Transparent API

相关问题 更多 >

    热门问题