【问题标题】:Why cv::gpu::GaussianBlur is slower, than cv::GaussianBlur?为什么 cv::gpu::GaussianBlur 比 cv::GaussianBlur 慢?
【发布时间】:2014-11-29 09:43:44
【问题描述】:

我不是 C++、OpenCV 和 CUDA 方面的专家,不明白为什么

cv::gpu::warpPerspective(g_mask, g_frame, warp_matrix, g_frame.size(), 
    cv::INTER_LINEAR, cv::BORDER_CONSTANT, cv::Scalar(255,255,255));
cv::gpu::GaussianBlur(g_frame, g_frame, cv::Size(blur_radius, blur_radius), 0);
g_frame.download(mask);

cv::gpu::warpPerspective(g_mask, g_frame, warp_matrix, g_frame.size(), 
    cv::INTER_LINEAR, cv::BORDER_CONSTANT, cv::Scalar(255,255,255));
g_frame.download(mask);
cv::GaussianBlur(mask, mask, cv::Size(blur_radius, blur_radius), 0);

告诉我,为什么会这样?还是我写错了代码?

【问题讨论】:

  • 也许一些关于您应用内核的矩阵大小的额外信息可能有用。
  • 你的 CPU 和 GPU 的型号是什么?
  • @Max 所有的 Mat 都是视频帧。速度不取决于大小。分辨率越低,这两个函数的工作速度就越快。
  • @sgar91 Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz 和 Nvidia GeForce GT 630M
  • OpenCV GPU 很慢,所以这种情况并不少见。

标签: c++ opencv cuda gpu


【解决方案1】:

GPU 的 IPC 开销通常是罪魁祸首。您应该考虑使用 cv::Stream 接口来最小化这种开销。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-05
    • 2013-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-14
    • 1970-01-01
    相关资源
    最近更新 更多