C++、OpenCV:异步运行 cuda::dft

标签 c++ opencv

我注意到如果传递流,OpenCV 的函数 cv::cuda::dft 也会同步运行。通常这意味着函数是异步执行的。然而,dft 函数似乎调用了导致同步行为的 cudaFree

有没有办法让它异步运行?

最佳答案

问题在于袖口计划的创建和销毁。函数 cv::cuda::dft 会在您每次调用它时执行此操作。当在循环中完成并导致同步调用时,这是非常低效的。目前似乎没有办法创建 dft 过滤器然后多次应用它,因为使用 cudafilters 是可能的,您可以先创建一个过滤器然后将它多次应用于不同的数据。

最后我通过不使用 OpenCV 的 dft 函数而是直接使用 cufft 解决了这个问题。然后我可以在循环之前创建一次计划,在循环内用那个计划做我的 ffts,然后在循环之后销毁它。

关于C++、OpenCV:异步运行 cuda::dft,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36228551/

相关文章:

c++ - 使用 boost 的源特定多播

c++ - 如何在 CLion 中编译子目录文件?

c++ - 以巧妙的方式禁用 QCheckbox

c++ - DirectX 9 字体库?

c++ - header 一定是文件吗?

c++ - 从图像数组创建单个图像

c++ - ros 到 opencv 图像转换器中的 undefined reference 错误

c++ - 包含从源代码编译的 ffmpeg 时从源代码编译 opencv 时出现链接错误

c++ - 使用 opencv c++ 每 1 分钟创建一个新的视频文件

objective-c - 我该如何解决 'Semantic Issue'