opencv自带人脸检测算法对比

今天把opencv自带的几个frontface检测器做了一个效果比较


frontface检测器如下:

haarcascade_frontalface_alt.xml
haarcascade_frontalface_alt_tree.xml
haarcascade_frontalface_alt2.xml
haarcascade_frontalface_default.xml

核心代码:

//检测器加载路径
//char* cascade_name ="D://haarcascade_frontalface_alt.xml"; //3333.56ms     num = 63
//char* cascade_name ="D://haarcascade_frontalface_alt_tree.xml"; //1423.51ms  num=48
//char* cascade_name ="D://haarcascade_frontalface_alt2.xml";   //2243.31ms    num = 63
char* cascade_name ="D://haarcascade_frontalface_default.xml";   //3996.3ms  num= 80

//加载检测器
CvHaarClassifierCascade* cascade = (CvHaarClassifierCascade*)cvLoad( cascade_name, 0, 0, 0 );

//调用检测算法
 double t = (double)cvGetTickCount();
  CvSeq* faces = cvHaarDetectObjects( small_img, cascade, storage,
                                            1.1, 2, 0/*CV_HAAR_DO_CANNY_PRUNING*/,
                                            cvSize(30, 30) );
   t = (double)cvGetTickCount() - t;
   printf( "detection time = %gms\n", t/((double)cvGetTickFrequency()*1000.) );

我在网上找了一张毕业照来做测试(随便在百度上搜的,不知道侵犯肖像权没有,如有冒犯请第一时间联系我!)

检测器名称耗时(ms)检测结果(目标个数)
alt3333.5663
alt_gree1423.5148
alt22243.3163
default3996.380


使用haarcascade_frontalface_alt检测器,所有人脸都检测到了,但有多个误检,且耗时很长


使用haarcascade_frontalface_alt_tree检测器,效果不错,只有一个漏检,有两个误检



使用haarcascade_frontalface_alt2检测器,所有人脸都检测到了,但有多个误检


使用haarcascade_frontalface_default检测器,检测效果较差




另外,我又用以上几种检测器测试了下面场景,效果都不是很好,其中,haarcascade_frontalface_alt_tree检测器一个也没有检测到,这个应该是opencv的训练样本的问题,用自带的检测器对于正脸的检测率会高很多,而对于侧脸的检测效果很差,需要后期自己训练模板来检测。这是下一步的工作。


  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值