前天老板突然把原来2个月的项目压缩到2个星期(PS:要不要差距这么大),
本来计划的比较完善的暑假计划看来要搁置一段时间了,不能刷题了,不能看视频了,不能。。。
万一马上的这个学期可以打比赛但是缺少训练怎么办。。。。。。。。。。。。。不知道。。。
【不同一 分类器的加载】
IplImg版本:
static CvMemStorage* storage = 0; static CvHaarClassifierCascade* cascade = 0; const char* cascade_name = NULL; int main() { ... ... //初始化分类器 cascade_name = "E:/Project/faceDetect/faceDetect/haarcascade_frontalface_alt2.xml"; //加载分类器 cascade = (CvHaarClassifierCascade*)cvLoad( cascade_name, 0, 0, 0 ); //如果分类器没有正常加载,报错 if( !cascade ) { fprintf( stderr, "ERROR: Could not load classifier cascade\n" ); return -1; } storage = cvCreateMemStorage(0); ... ... }
Mat版本:
String cascadeName = "./haarcascades/haarcascade_frontalface_alt2.xml";//人脸的训练数据 String nestedCascadeName = "./haarcascades/haarcascade_eye.xml";//人眼的训练数据 int main() { ... ... CascadeClassifier cascade, nestedCascade;//创建级联分类器对象 //从指定的文件目录中加载级联分类器 if( !cascade.load( cascadeName ) ) { cerr << "ERROR: Could not load classifier cascade" << endl; return 0; } //如果分类器没有正常加载,报错 if( !nestedCascade.load( nestedCascadeName ) ) { cerr << "WARNING: Could not load classifier cascade for nested objects" << endl; return 0; } ... ... }
【不同二 调用detectAndDraw】
IplImg版本:
int main() { ... ... //将原图片转成iplimg型 IplImage * src=&(IplImage)frame; //原型cvSetImageROI(src , cvRect(x,y,width,height)); cvSetImageROI(src,cvRect(a,b,c,d)); IplImage * dst = cvCreateImage(cvSize(c,d), src->depth, src->nChannels); cvCopy(src,dst,0); cvResetImageROI(src); detect_and_draw(dst); //释放显示分配空间的dst cvReleaseImage(&dst); ... ... }
Mat版本:
int main() { ... ... //得到要识别的矩形框 Rect r=Rect(a,b,c,d); //截取frame中的r矩形框大小 Mat src=frame(r); detectAndDraw(src,cascade, nestedCascade,1.3); ... ... }