我正在使用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));

最佳答案

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

您可以尝试:

  • 将源图像分辨率降低到合理的值
  • 少量增加scaleFactor参数(例如0.1步骤)
  • 取决于您的分辨率,相机的视场和面部距离,请定义min_sizemax_size参数的值。这会极大地影响算法需要执行的操作数量。

  • 其次,您可以发布您的实际参数和分析结果,周围的人肯定可以提供一些进一步改进的提示。

    附带说明:如果您想让算法正常运行,我认为注释掉分支条件不会对速度产生明显的影响。

    08-04 17:25