从T-API Umat缓慢复制到内存缓冲区

时间:2016-05-04 11:45:36

标签: opencv opencl opencv3.0

我正在使用OpenCV T-API来获取在GPU上执行的OpenCV内容(如果可用)。我有一个获取内存缓冲区的函数,我将其读入Mat,将其转换为cv::UMat并执行我的更改。这种方法非常好,处理速度提高了3到10倍,取决于我的处理方式。这对我帮助很大,因为我想实时更改相机图像,并且显着提高了我的FPS计数。

但是,我需要将数据恢复到内存中以便在屏幕上显示,因此我需要将数据复制回内存,我感到震惊的是它有多慢。将图像复制到UMat中实际上需要花费15倍的时间。我在cv::UMat::getMat()中使用cv::UMat方法,还有其他方法可以加快速度吗?

另外,我需要将图像数据写入特定的内存地址。当我使用cv::UMat::getMat()时,会创建一个新的cv::Mat以及数据缓冲区,我必须将数据复制到所需的地址。有没有办法直接将数据从cv::UMat写入地址?

如果我直接使用OpenCL而不是使用OpenCV透明API会更快吗?

0 个答案:

没有答案