OpenCV 3 OpenCL UMat绘图功能

OpenCV 3 OpenCL UMat drawing functions

本文关键字:绘图 功能 UMat OpenCL OpenCV      更新时间:2023-10-16

我正在升级到OpenCV 3,并使用UMat T_API OpenCL容器而不是Mat.

像矩形(Mat-img,…)这样的绘图函数似乎没有UMat重载。我想尽可能多地在UMat世界中工作,在框架上绘制,而不必将UMat转换回Mat进行绘制和显示。

有人能给我在UMat上画矩形的最有效方法吗?或者我必须转换回Mat才能绘制和显示?

不幸的是,如果不从GPU内存传输数据,就无法在UMat上绘制内容。您可以使用以下方案进行绘图:

cv::Mat draw_img = img.getMat(cv::ACCESS_WRITE);
cv::rectangle(draw_img, ...);
draw_img.release();

请注意,getMat(cv::ACCESS_WRITE)需要同步。因此,为了最大限度地利用GPU处理,最好避免绘图操作或将其分组为一个块。