opencv - 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);
}
非常感谢。
解决方案
CUDA 设备内存分配和将数据从设备复制到主机(反之亦然)非常慢。请尝试分配内存并在主循环之外加载数据。克隆矩阵每次都会分配新的设备内存,尝试使用复制数据而不是克隆它应该会加快您的代码速度。
推荐阅读
- javascript - 页面刷新时运行函数的最佳方式
- algorithm - 为什么线性时间可约重要
- node.js - 从 MongoDB 中的特定月份和特定年份获取文档
- c# - WinForms C# Not all code paths return a value
- angular - 拉斐尔与 Angular 4+
- javascript - Assigning one array to another javascript
- git - 补丁文件最后包含 git 版本
- javascript - 只能将“”作为值分配给输入类型文件
- java - How to locate the element using Selenium and xpath?
- deployment - GitLab Runner 不会通过 scp 连接到其他 ec2 错误:debug1: read_passphrase: can't open /dev/tty: No such device or address