使用OpenCV和LBP在iPhone上进行人脸检测

时间:2011-02-07 12:27:48

标签: iphone xcode optimization opencv face-detection

我已成功使用OpenCV-2.1.0中的Haar算法(cvHaarDetectObjects)来检测iOS 4.2的Objective-C项目中的图片和视频帧中的面部。但是,在大多数情况下,iPhone 4上的视频帧处理时间大约需要1-2秒。我正在使用的代码示例如下:

    NSString *path = [[NSBundle mainBundle] pathForResource:@"haarcascade_frontalface_alt" ofType:@"xml"];

    CvHaarClassifierCascade* cascade = 
            (CvHaarClassifierCascade*)cvLoad([path cStringUsingEncoding:NSASCIIStringEncoding], 
                                             NULL, NULL, NULL);
    CvMemStorage* storage = cvCreateMemStorage(0);

    CvSeq* faces = cvHaarDetectObjects(small_image, cascade, storage, 1.2, 0, 
                                       0 |CV_HAAR_DO_ROUGH_SEARCH |CV_HAAR_FIND_BIGGEST_OBJECT, cvSize(30, 30));

我尝试了多种优化技术,包括ROI的智能应用,以及整数而不是浮点数的使用。然而,这些变化花费了大量时间,只有很小的好处。

有人建议我使用LBP可以显着缩短面部检测时间。我一直在尝试和寻找实施LBP的方法,但无济于事。在opencv中,有一个级联文件(lbpcascade_frontalface.xml),但我找不到任何有关如何使用它的建议。

任何帮助都将受到赞赏,包括我可能在搜索中遗漏的其他优化技巧和Google链接。只要合理有效,检测的准确性并不重要。

谢谢!

1 个答案:

答案 0 :(得分:2)

尝试使用Instruments来确定应用程序中性能瓶颈的位置。它们可能与您认为的不同。

另外,请查看this效果指南。