如何使用TBB构建OpenCV?
我试图让如何使用TBB构建OpenCV?,opencv,tbb,Opencv,Tbb,我试图让opencv\u traincascade使用多线程,但失败了。我能找到的唯一文档是“用TBB构建OpenCV”。我不确定是否无法使用TBB成功构建OpenCV,或者是否需要为OpenCV\u traincascade设置一些标志 我已经下载了OpenCV版本2.3.1 windows superpack和tbb40\u 20111003oss\u win.zip,我将其解压缩到C:\tbb40\u 20111003oss。然后,我使用CMake生成VC8.sln和.proj文件,设置
opencv\u traincascade
使用多线程,但失败了。我能找到的唯一文档是“用TBB构建OpenCV”。我不确定是否无法使用TBB成功构建OpenCV,或者是否需要为OpenCV\u traincascade
设置一些标志
我已经下载了OpenCV版本2.3.1 windows superpack和tbb40\u 20111003oss\u win.zip,我将其解压缩到C:\tbb40\u 20111003oss
。然后,我使用CMake生成VC8.sln
和.proj
文件,设置
带_-TBB:ON
TBB\u INCLUDE\u DIR:PATH=C:\tbb40\u 20111003oss\INCLUDE
TBB_LIB_DIR:PATH=C:/tbb40_20111003oss/LIB/intel64/vc8
OpenCV随后会无错误地构建,但当我运行OpenCV\u traincascade
时,它是单线程的。有人知道我做错了什么吗?试试setNumThreads(),把处理器内核的数量作为参数。有一个helper函数可以找到最佳线程数(等于内核数),但我记不起来了
请确保您还重建了train_cascade exe,此处的说明:我知道这是一个旧线程,但我认为问题在于您使用的train cascade带有Haart功能,而不是LBP功能,后者使用整数而不是浮点,工作速度快了3倍
请参阅中的注释以获取作者关于此的更多信息。快速总结:Haart训练很难并行化,但LBP更容易,并且可以利用很多处理器
希望能有帮助 如果您在Mac上,可以使用自制软件:
brew tap homebrew/science
brew install opencv --with-tbb
brew uninstall opencv
brew install opencv --with-tbb
或者,如果您已经安装了自制软件:
brew tap homebrew/science
brew install opencv --with-tbb
brew uninstall opencv
brew install opencv --with-tbb
另外,info
命令会告诉您可能感兴趣的其他标志,例如--使用java
brew info opencv
构建tbb二进制文件后,请确保路径正确地将可执行文件定向到tbb DLL。您可能正在加载非tbb DLL(这发生在我身上),这些DLL将不提供多线程处理。对于linux,请执行以下操作:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON BUILD_TBB=ON ..
此外,一个接触点是在系统上安装Intel TBB:
$ sudo apt-get install libtbb-dev
我把这个放在哪里?我需要运行一些东西来安装TBB吗?我所做的就是提取.zip文件。在代码中调用函数。。。如果你有自己的项目。但是嗯,您是否在系统路径中添加了TBB?如果没有,请执行此操作,注销并再次登录,然后重试。CMake生成的.vcproj文件将TBB目录列为其他include目录。我已将TBB添加到系统路径并重建,但运气不佳。这里的文档说明“注意opencv_traincascade应用程序是TBB并行的。要在多核模式下使用它,opencv必须使用TBB构建。”它没有提到多核标志作为输入,因此似乎建议opencv_traincascade应自动运行多线程。但事实并非如此。op显然在Windows上。@Goddard-答案不仅仅是op。你可以像我一样通过谷歌buildopencvmac
登录到这个页面。