OpenCV 4.1 と Python 3.6 を使用して、ODROID XU4 (Mali-T628 GPU を搭載した Samsung Exynos5422) でライブ ビデオ処理を行っています。画像を含む Numpy 配列を UMat に変換することで、GPU を使用できます。
img_umat = cv2.UMat(img_array)
これが完了すると、画像処理コードは CPU よりも高速に実行されます。ただし、GPU との間の転送には長い時間がかかります (場合によっては ~0.03 秒)。これを回避する方法はありますか?
私は GPU プログラミングに不慣れで、セクション 8.3 hereに頭を悩ませています。デフォルトの「cv2.UMat(array)」イニシャライザがどのようにメモリを割り当てているのかわからないので、指定しようとしました。
host_mat = cv2.UMat(mat,cv2.USAGE_ALLOCATE_HOST_MEMORY)
しかし、これを行うと、エラーはスローされず、host_mat は空です。私は何か間違ったことをしていますか、それとも完全に間違った道を進んでいますか? 任意の提案をいただければ幸いです。