2013-08-27 54 views
3

我现在比较用纯C代码编写的代码和使用openCV函数cvHaarDetectObjects()的代码之间的Viola-Jones代码的时间性能。在openCV中使用Viola Jones进行人脸检测

到目前为止,似乎用纯C代码检测人脸所花费的时间大约是使用openCV函数的三倍。即使纯C代码版本使用简化的算法。

任何人都可以给我一个提示吗?

+1

您是否在纯C代码版本上使用某种并行化?我认为OpenCv使用OpenMP或类似的东西来提高性能,因为Viola-Jones算法是高度可并行化的。 –

+1

OpenCV使用英特尔的TBB优化算法.. –

回答

2

使用一些分析器来比较两种执行速度,看看哪个部分存在最大的差异。 Very Sleepy是我最喜欢的一个,但当然它不是唯一的 - What's the best free C++ profiler for Windows?
OpenCV的实现可能要快得多,因为它使用(在大多数操作中 - 不仅在Viola-Jones算法中,而且在基本操作中)并行化,处理器扩展如MMX,SSE(不同版本)和优化技巧(通常非常奇怪 - http://www.beyond3d.com/content/articles/8)。