需要帮助来改善OpenCV 2.4.0中的人脸检测执行时间

时间:2012-07-13 11:33:17

标签: android c opencv

我正在使用cvHaarDetectObjects C函数来检测Android应用程序中的面部,但执行时间不够快,无法每秒处理一定数量的视频帧。所以,我正在考虑评论对我来说不必要的代码,例如我注意到可以注释掉的标志和内存分配语句有很多分支条件。对于从cvHaarDetectObjects调用的函数,可以执行相同的操作。

之前有没有人尝试过这种优化?非常感谢任何帮助。

代码:

cascadeFile1 = (CvHaarClassifierCascade *) cvLoad(cascadeFace,0,0,0);
CvSeq *face = cvHaarDetectObjects(img1, cascadeFile1, storage,1.1, 3,CV_HAAR_DO_CANNY_PRUNING,cvSize(0,0));

1 个答案:

答案 0 :(得分:0)

作为第一步,您应该尝试调整输入参数,因为这些对分类器的性能有很大影响。

您可以尝试:

  1. 将源图像分辨率降低到合理的值
  2. scaleFactor参数少量增加(例如0.1步骤)
  3. 根据您的分辨率,相机视野和面部距离,定义min_sizemax_size参数的值。这可以极大地影响算法需要执行的操作数量。
  4. 其次,你可以发布你的实际参数和你的分析结果,这里的人肯定会提供更多关于改进的提示。

    作为旁注:如果您想让算法正常运行,我认为评论分支条件不会对速度产生明显的影响。