OpenCV 3中的OpenCL UMat绘图函数

3
我正在升级到OpenCV 3,并使用UMat T_API OpenCL容器代替Mat。
看起来像rectangle(Mat img, ...)这样的绘制函数没有UMat重载。我希望在尽可能多地使用UMat的情况下,在帧上绘制而不必将UMat转换回Mat进行绘制和显示。
有人能告诉我在UMat上绘制矩形的最有效方法吗?还是我必须将其转换回Mat进行绘制和显示?
1个回答

1

很遗憾,没有办法在UMat上绘制图形而不从GPU内存传输数据。您可以使用以下方案进行绘图:

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

请注意,getMat(cv::ACCESS_WRITE)需要同步。因此,为了获得GPU处理的最大好处,最好避免绘图操作或将其分组到一个块中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接