我用C ++和霓虹灯实现自己的高斯滤波器。
伪代码:
oneDimensionBlur(src, temp1, width, height) //implement by C++
transposeMatrix(temp1, temp2, width, height) //implement by neon
oneDimensionBlur(temp2, temp1, height, width)
transposeMatrix(temp1, dst, height, width)
但是cv :: GaussianBlur()比我的实现快8倍!我几乎对分析结果感到绝望。所以我想问一下,opencv是否在高斯模糊上使用任何加速技术?我尝试跟踪opencv源代码,但失败了。
答案 0 :(得分:0)
OpenCV可以明确地使用并行技术来加速cv::GaussianBlur
。在here中查找其实现。如您所见,该文件中使用OpenCL,IPP或OpenVX至少具有3个并行化的函数版本。
有一些禁用优化的功能,例如setUseOptimized
或setUseOpenCL
。有关控制多线程的更多方法,请参见this页面底部的函数。
最后,从源代码构建OpenCV,禁用OpenCL之类的所有功能并在单个线程上运行它(使用setNumThreads
)可能更容易。