I am currently working on a people detection and counting project. It basically detect for any people in the scene via USB webcam, then count people passingby. Currently, my setup is:
- OpenCV 2.4.6, detect people head using Haar method (floating point processing)
- ARM board with ARM A9 quad core and Mali quad core GPU
Unfortunately, the processing time is not fast enough 70 - 100 ms per frame (14 - 10 fps) so that people walking in normal speed or faster is not counted. The bottleneck is in the OpenCV HaarDetection method, basically 90% of the processing time per frame is consumed by the process.
I tried using another model beside Haar, the LBP model which is based on integer processing, but so far my LBP model is not satisfying and I am still working on to create new models. Also, I tried using TBB with OpenCV (multithreading natively implemented in OpenCV) but somehow cause crash in Odroid, the application works stable if I do not use TBB.
The only optimization I can think of is to utilize the Mali GPU in the board, recompiling OpenCV with modified HaarDetection to utilize some GPU processing power. My question is, is this doable using the OpenGL library? I see most example of OpenGL is to render graphic, not processing images.