OpenCV 多核支持

OpenCV Multi Core Support

我想知道 OpenCV 库是否有多核支持。我正在试验 Haar 级联,它在我的 Raspberry 2 上非常慢,它有四个内核,但我的应用程序目前 运行 仅在一个内核上。

有什么想法吗?

我已经简要浏览了 modules\objdetect\src\cascadedetect.cpp 中的 class CascadeClassifierparallel_for_ 似乎有相当数量的实现,内置 OpenCV 多线程工具。

不过,您的里程可能会有所不同。至少在训练阶段似乎有很多顺序代码,正如 OpenCV 支持论坛中的 this thread 所建议的那样。

因此,如果您可以让 OpenCV 使用 OpenMP(可能最容易设置)、TBB 或类似工具进行编译,那么您就可以开始了。

希望对您有所帮助!

CascadedDetect 支持多核。

使用 WITH_TBBWITH_OPENMP(或 OpenCV 支持的任何其他线程框架)标志重新编译 OpenCV 以启用它。

最近我发现了 Simd Library, which has an implementation 的 HAAR 和 LBP 级联分类器。它可以使用来自 OpenCV 的标准 HAAR 和 LBP 级联。此实现使用 SSE4.1、AVX2 和 NEON(ARM) 进行了 SIMD 优化。

我没有检查它是否适用于 Raspberry 2,但我已经检查过它是否适用于 Raspberry 3(它的工作速度比原始 OpenCV 实现快约 2 倍)。