【问题标题】:Where are the GPU functions on OpenCV 3.0?OpenCV 3.0 上的 GPU 功能在哪里?
【发布时间】:2015-01-10 14:48:17
【问题描述】:

我了解到,在 OpenCV 3.0 中,模块 GPU 已被模块 CUDA 取代,或者更好的是它已被拆分为多个模块。

所以cv::gpu::GpuMat 已被cv::cuda::GpuMat 取代,很好。

但是函数呢?

例如,将以下内容移至:

cv::gpu::GaussianBlurr ?
cv::gpu::Stream stream;
stream.enqueueConvert(...)

显然它们不在 cuda 模块下(例如,没有 cv::cuda::GaussianBlurr)。在 OpenCV 3.0 中哪里可以找到这个功能?

【问题讨论】:

  • 我不熟悉 OpenCV 代码库,但快速浏览一下存储库,CUDA 加速 GaussianBlur() 似乎在模块 cudaoptflow 中。
  • 不幸的是,即使包括 cudaoptflow,我也找不到 GaussianBlur。
  • 我在 opencv/modules/cudaoptflow/src/cuda/farneback.cu 找到了 GaussianBlur 的源代码。也许由于构建配置问题,此代码未包含在您的构建中?

标签: c++ opencv cuda


【解决方案1】:

所有 CUDA 加速滤镜(Blur、GaussianBlur、Sobel 等)都位于 cudafilters 模块中:https://github.com/Itseez/opencv/blob/master/modules/cudafilters/include/opencv2/cudafilters.hpp

新 API 使用基于算法的方法:

cv::Ptr<cv::cuda::Filter> filter = cv::cuda::createGaussianFilter(src.type(), dst.type(), ksize, sigma);
filter->apply(src, dst);

新方法有助于减少内部缓冲区的内存分配并减少过滤器初始化阶段的开销。

【讨论】:

    猜你喜欢
    • 2018-04-23
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多