CascadeClassifier *pClassifier = new CascadeClassifier;
若在程序的使用中,不释放该对象,只是来回在Haar特征和LBP特征之间切换,比较两种特征检测人脸的效果,如下:
Mat matimage;
vector<Rect> objs;
pClassifier->load("haarcascade_frontalface_default.xml");
pClassifier->detectMultiScale(matimage,objs,1.1,3);
pClassifier->load("lbpcascade_frontalface.xml");
pClassifier->detectMultiScale(matimage,3);
pClassifier->load("haarcascade_frontalface_default.xml");
pClassifier->detectMultiScale(matimage,3);
那么程序会果断的崩溃,因为lbpcascade_frontalface.xml文件格式是新版本的。
vector<Stage> CascadeClassifier::stages
该变量的size决定了循环的次数。如果当前模型只有20个stage,但是上次读取xml时该变量没有清空,那么CascadeClassifier::stages的长度可能会变成40。于是当前检测人脸的时候会循环40次,但是模型实际上只有20个stage,循环次数超过20的时候,索引出来的其他变量可能就是无效的,从而导致下标越界,使程序崩溃。
转载:http://blog.sina.com.cn/s/blog_4298002e010153hn.html#cmt_3085837
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。