我正在使用 OpenCV 4.1 和 Python 3.6 在 ODROID XU4(带有 Mali-T628 GPU 的三星 Exynos5422)上进行实时视频处理。我可以通过将包含我的图像的 Numpy 数组转换为 UMat 来使用 GPU,例如:
img_umat = cv2.UMat(img_array)
这样一来,图像处理代码的运行速度就会比在 CPU 上运行得更快;但是,与 GPU 之间的传输需要很长时间(在某些情况下约为 0.03 秒)。有没有办法解决?
我是 GPU 编程的新手,在这里第 8.3 节一直摸不着头脑。我不知道默认的“cv2.UMat(array)”初始化程序是如何分配内存的,所以我尝试指定它,例如
host_mat = cv2.UMat(mat,cv2.USAGE_ALLOCATE_HOST_MEMORY)
但是当我这样做时,不会抛出任何错误并且 host_mat 是空的。我做错了什么,还是我完全走错了路?任何建议表示赞赏。