我想知道 OpenCV 库是否有多核支持。我正在试验 Haar 级联,它在我的 Raspberry 2 上非常慢,它有四个内核,但我的应用程序目前只在一个内核上运行。
有任何想法吗?
我想知道 OpenCV 库是否有多核支持。我正在试验 Haar 级联,它在我的 Raspberry 2 上非常慢,它有四个内核,但我的应用程序目前只在一个内核上运行。
有任何想法吗?
CascadedDetect
具有多核支持。
WITH_TBB
使用或(或 OpenCV 支持的任何其他线程框架)标志重新编译 OpenCVWITH_OPENMP
以启用它。
我对 中的类进行了简要介绍CascadeClassifier
,modules\objdetect\src\cascadedetect.cpp
并且似乎使用parallel_for_
内置的 OpenCV 多线程工具完成了合理数量的实现。
不过,您的里程可能会有所不同。至少在训练阶段似乎有很多顺序代码,正如OpenCV 支持论坛中的这个线程所暗示的那样。
因此,如果您可以让 OpenCV 使用 OpenMP(可能是最容易设置的)、TBB 或类似工具进行编译,那么您应该很高兴。
希望有帮助!
最近我发现了一个Simd Library,它实现了 HAAR 和 LBP 级联分类器。它可以使用来自 OpenCV 的标准 HAAR 和 LBP 级联。此实现通过使用 SSE4.1、AVX2 和 NEON(ARM) 进行了 SIMD 优化。
我没有检查过 Raspberry 2,但我检查过 Raspberry 3(它的工作速度比原始 OpenCV 实现快约 2 倍)。