很多人觉得OpenCV速度比较慢,其实提升OpenCV运行速度,最常见的就是重新编译OpenCV,添加各种指令集优化支持。
在CMake阶段:
启用SSE指令集,SSE3/SSE4,AVX/AVX2
勾选支持 ENABLE_AVX ENABLE_AVX2 ENABLE_POPCNT
勾选 TBB支持
如果有英伟达显卡,勾选 CUDA相关选项
代码实现阶段:
1. 多用指针
2. 框架 parallel_for_ 编程,支持OpenMP、pthreads、C++11 threads、Intel TBB、Microsoft并发或GCD等在不同系统上。
3. 多看OpenCV源码,实现SSE编程重写
4. CUDA编程实现
===============================
上述主要针对传统的图像处理模块! 对深度神经网络-DNN模块,OpenCV支持OpenVINO加速执行 是一个很好的选择,另外一个好像10月份 DNN已经添加了CUDA支持,后续DNN模块将会支持CUDA加速,预期在OpenCV的下个release中将会发布。 =================================
总结,基本上OpenCV通过上述手段加速,特别是并行对卷积操作特别有效,常规的3D卷积加速可以达到300倍左右!CUDA对传统的图像处理可以达到30~100之间,可以说基本上让OpenCV性能速度可以达到工业级应用要求!
SIMD指令集 SSE/AVX
https://blog.csdn.net/qq_32916805/article/details/117637192
MMX和SSE实现的opencv数据结构的图像反色算法优化
SSE图像算法优化系列一:一段BGR2Y的SIMD代码解析。
SSE图像算法优化系列七:基于SSE实现的极速的矩形核腐蚀和膨胀(最大值和最小值)算法。