OpenCV 3 OpenCL UMat绘图功能

时间:2015-11-30 17:30:05

标签: c++ opencv opencl opencv3.0

我升级到OpenCV 3并使用UMat T_API OpenCL容器而不是Mat。

看起来像矩形(Mat img,...)等绘图功能没有UMat重载。我想尽可能在​​UMat世界中工作,无需将UMat转换回Mat进行绘图和显示。

有人能给我最有效的方法在UMat上绘制一个矩形吗?或者我是否必须转换回Mat来绘制并显示?

1 个答案:

答案 0 :(得分:0)

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

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

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