【发布时间】:2015-03-09 09:28:51
【问题描述】:
我想知道 OpenCV 库是否支持多核。我正在试验 Haar 级联,它在我的 Raspberry 2 上非常慢,它有四个内核,但我的应用程序目前只在一个内核上运行。
有什么想法吗?
【问题讨论】:
-
感谢您的回答!
标签: opencv raspberry-pi multicore raspberry-pi2
我想知道 OpenCV 库是否支持多核。我正在试验 Haar 级联,它在我的 Raspberry 2 上非常慢,它有四个内核,但我的应用程序目前只在一个内核上运行。
有什么想法吗?
【问题讨论】:
标签: opencv raspberry-pi multicore raspberry-pi2
CascadedDetect 支持多核。
重新编译 OpenCV 并启用 WITH_TBB 或 WITH_OPENMP(或 OpenCV 支持的任何其他线程框架)标志以启用它。
【讨论】:
我简要了解了modules\objdetect\src\cascadedetect.cpp 中的CascadeClassifier 类,并且似乎使用内置的OpenCV 多线程工具parallel_for_ 完成了相当多的实现。
不过,您的里程可能会有所不同。正如 OpenCV 支持论坛中的 this thread 所建议的那样,至少在训练阶段似乎有很多顺序代码。
因此,如果您可以让 OpenCV 使用 OpenMP(可能是最容易设置的)、TBB 或类似工具进行编译,那么您应该很高兴。
希望有帮助!
【讨论】:
最近我发现了一个Simd Library,它有一个implementation 的HAAR 和LBP 级联分类器。它可以使用来自 OpenCV 的标准 HAAR 和 LBP 级联。此实现通过使用 SSE4.1、AVX2 和 NEON(ARM) 进行了 SIMD 优化。
我没有检查过 Raspberry 2,但我检查过 Raspberry 3(它的运行速度比原始 OpenCV 实现快约 2 倍)。
【讨论】: