本文主要是介绍IplImg 和 Mat 版本的 facedetect 大对比,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前天老板突然把原来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);//释放显示分配空间的dstcvReleaseImage(&dst);... ...
}
Mat版本:
int main()
{... ...//得到要识别的矩形框Rect r=Rect(a,b,c,d);//截取frame中的r矩形框大小Mat src=frame(r);detectAndDraw(src,cascade, nestedCascade,1.3);... ...
}
这篇关于IplImg 和 Mat 版本的 facedetect 大对比的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!