2

我正在使用cvHaarDetectObjectsC 函数在我的 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));
4

1 回答 1

0

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

您可以尝试:

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

其次,您可以发布您的实际参数和分析结果,这里的人肯定可以提供更多关于改进的提示。

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

于 2012-07-16T15:15:16.070 回答