首页 > 解决方案 > OpenCV CUDA API 在第一次调用时非常慢

问题描述

我正在使用cuda::resize调整图像矢量的大小(在 GpuMat 中)

它显示第一个调用大约需要 15 毫秒,其余的只需要大约 0.3 毫秒。所以想问问有没有办法缩短第一次通话的时间。

这是我的代码(简化):

for (int i = 0; i < num_images; ++i)
    {
        full_img = v_GpuMat[i].clone(); // vGpuMat is vector of images in cuda::GpuMat
        seam_scale = 0.4377;
        cuda::resize(full_img, img, Size(), seam_scale, seam_scale, INTER_LINEAR);
    }

非常感谢。

标签: opencvcuda

解决方案


CUDA 设备内存分配和将数据从设备复制到主机(反之亦然)非常慢。请尝试分配内存并在主循环之外加载数据。克隆矩阵每次都会分配新的设备内存,尝试使用复制数据而不是克隆它应该会加快您的代码速度。


推荐阅读