OpenCV的级联分类器不利用CPU的全部功率

时间:2011-11-13 17:02:49

标签: c++ multithreading opencv

我正在使用OpenCV的级联分类器进行检测,但是我的CPU利用率从未超过50%但应用程序仅以~8 FPS运行,因此应该有更多的改进空间。我已经用TBB安装了OpenCV。我自己的程序不使用任何多线程,它只在OpenCV的部分(detectMultiscale函数)。所有CPU核心都在40%左右。我已经尝试将程序的优先级设置为实时,但这没有帮助。可能会出现我不知道的某种瓶颈吗?

构建详细信息:

我正在使用Visual Studio 2010 IDE。目前使用这些优化:优化:最大化速度(/ O2),内联函数扩展:默认,启用内部函数:是(/ Oi),支持快速代码(/ Ot),省略帧指针:是(/ Oy),启用光纤 - 安全优化:不,整个程序优化:是(/ GL)。我使用的是Windows 7 64位,在发布模式下将程序构建为64位。

2 个答案:

答案 0 :(得分:0)

您需要配置允许在CMake中使用TBB支持构建OpenCV的选项。

答案 1 :(得分:0)

也许你有一台采用超线程技术的英特尔处理器。 (每个核心2个线程),TBB非常智能,每个核心只使用一个线程(通常比两个线程更好)。操作系统报告可用功率的一半。

修改

如果你想自己修改分类器,你可以调用setNumThreads(4);然后映射亲和力,你将有100%的核心,而不是平均80%,如评论中所述

你看到的是市场营销(8核!!)和真相(~3核)之间的区别