2013-08-27 2 views
3

Теперь я сравниваю время выполнения кода Viola-Jones между тем, что написано в чистом C-коде, и тем, которое использует функцию openCV cvHaarDetectObjects().Обнаружение лица с помощью Viola Jones в openCV

До сих пор кажется, что время, необходимое для обнаружения лиц с чистым кодом 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 выполняется намного быстрее, поскольку использует (в большинстве операций - не только в алгоритме Виола-Джонса, но и в основных операциях) таких как MMX, SSE (разные версии) и трюки оптимизации (которые часто довольно странны - http://www.beyond3d.com/content/articles/8).

Смежные вопросы