void CFaceDetectDlg::detect_face_eyes( IplImage* img)//检测并定位眼睛
{
static CvMemStorage* storage_face = 0;//存储脸部
static CvMemStorage* storage_eye = 0;//存储眼睛
static CvHaarClassifierCascade* cascade_face = 0;//特征器分类
static CvHaarClassifierCascade* cascade_eye= 0;//特征器分类
const char* cascade_name ="haarcascade_frontalface_alt.xml";//分类器的名称
cascade_face = (CvHaarClassifierCascade*)cvLoad( cascade_name, 0, 0, 0 );//加载(分类器层叠)训练库
cascade_eye = cvLoadHaarClassifierCascade("cascade", cvSize(30,20));
storage_face = cvCreateMemStorage(0);
storage_eye = cvCreateMemStorage(0);
int scale = 1;
IplImage* temp = cvCreateImage( cvSize(img->width/scale,img->height/scale), 8, 3 );//分配图
temp = cvCloneImage(img);//复制当前图像
cvClearMemStorage( storage_eye );//清除眼睛存储
cvClearMemStorage( storage_face );//清除脸部存储
if( 1 )
{
CvSeq* faces = cvHaarDetectObjects( img, cascade_face, storage_face,
1.1, 2, CV_HAAR_DO_CANNY_PRUNING,
cvSize(30, 30) );//检测脸部
...
运行到这个地方程序就显示:Null Pointer(Invalid classifier cascade)
in function cvHaarDetectObjects,C:\User\VP\opencv\cv\src\cvhaar.cpp(890)
这是怎么回事阿,怎么都挑不出来,希望高手给予指点迷津!!! |