opencv有gmm和haar检测器的gpu加速版本。
官方文档:http://docs.opencv.org/2.4.13/modules/gpu/doc/video.html?highlight=gpu%3A%3Amog2_gpu#gpu::MOG2_GPU
重新编译了opencv后,可以依据文档的样例程序进行gpu版的前景提取和人脸/上半身检测。
遇到问题:
1、not all objects were deallocated properly
2、NCV assertion failed: cudaerror_t=77
以上错误由两个原因引发:
1、是因为我使用了多线程,两个线程在同时使用haar分类器进行检测,如果在for之类的循环中使用也会引起以上错误。
解决方案:在耗时较多的线程使用gpu版,耗时较少的线程使用cpu版。
其实总的时间没怎么降,但cpu的利用率会降。
2、官方文档的示例程序中cascadeclassfier.load()函数,使用重新编译后的xml文件,会报错。
解决方案:改用2410版本的xml文件,可以正常运行。
参考博客:
1.http://techqa.info/programming/question/27690318/Multithreading-with-gpu-in-OpenCV
2.https://barkingbogart.wordpress.com/2012/07/01/face-detection-with-opencv-gpu-version/