Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用TBB构建OpenCV?_Opencv_Tbb - Fatal编程技术网

如何使用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
登录到这个页面。