OpenCV 3.X 使用 UMAT 的定时函数调用

OpenCV 3.X Timing Function Calls using UMAT

我正在尝试在我的计算机上对 cv::remap() 执行 gpu 与 cpu 评估。 为此,我试图对 max_count 次通话的时间进行平均。

for(int count = 0; count < max_count; count++)
{
auto t0 = std::chrono::high_resolution_clock::now();
        cv::remap(cv_im_gpu, cv_im_gpu_remap, map1_gpu, map2_gpu, CV_INTER_LINEAR);
auto t1 = std::chrono::high_resolution_clock::now();
time += t1 - t0;
}
average_time = time / max_count;

我观察到第一次迭代花费了大约 100 毫秒(1024x768 像素输入图像),随后的迭代花费了 0 毫秒。我是否必须执行某种同步或这种行为的原因是什么?使用 cv::Mat 而不是 cv::UMat 调用相同的函数正如预期的那样工作,并且每次迭代贡献的时间大致相同。

我是 运行 windows 7 平台上的代码,ATI 360m 显卡使用 OpenCV 3.1.0。

谢谢。

我通过在 OpenCV 代码中添加 clWaitForEvents(...) 解决了这个问题。谢谢。