cv::CascadeClassifier类在多次读取新版本xml模型时的错误及其修
cv::CascadeClassifier类在多次读取新版本xml模型时的错误及其修正(2012-04-25 14:57:08)
转载▼
CascadeClassifier *pClassifier = new CascadeClassifier; 若在程序的使用中,不释放该对象,只是来回在Haar特征和LBP特征之间切换,比较两种特征检测人脸的效果,如下: Mat matImage; 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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |