【问题标题】:OpenCV 3 OpenCL UMat drawing functionsOpenCV 3 OpenCL UMat 绘图函数
【发布时间】:2016-03-04 10:26:30
【问题描述】:
我正在升级到 OpenCV 3 并使用 UMat T_API OpenCL 容器而不是 Mat。
看起来像 rectangle(Mat img, ...) 这样的绘图函数没有 UMat 重载。我想尽可能多地在 UMat 世界中工作以在框架上绘图,而不必将 UMat 转换回 Mat 进行绘图和显示。
谁能给我在 UMat 上绘制矩形的最有效方法?还是我必须转换回 Mat 才能在上面绘图和显示?
【问题讨论】:
标签:
c++
opencv
opencl
opencv3.0
【解决方案1】:
不幸的是,如果不从 GPU 内存传输数据,就无法在 UMat 上绘制东西。
您可以使用以下方案进行绘图:
cv::Mat draw_img = img.getMat(cv::ACCESS_WRITE);
cv::rectangle(draw_img, ...);
draw_img.release();
请注意getMat(cv::ACCESS_WRITE) 需要同步。所以为了获得GPU处理的最大收益,最好避免绘制操作或将其分组为一个块。