在 Python 中将 OpenCL 加速函数与 OpenCV3 结合使用

2023-11-26

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

对于 C++ 有这样的调用ocl::setUseOpenCL(true);当您使用时启用 OpenCL 加速UMat代替Mat对象。但是我没有找到任何有关 Python 的文档。

有人有关于如何在 Python 中使用 OpenCV3 实现 OpenCL 加速的示例代码、链接或指南吗?

UPDATE:

经过进一步挖掘,我发现了这个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 中使用 UMa。


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 透明 API

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Python 中将 OpenCL 加速函数与 OpenCV3 结合使用 的相关文章

随机推荐