请问以下人脸检测结果为何是-1??????
我是用windows下VC编译并采用opencv1.0.0版的
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <float.h>
#include "cv.h"
#include "highgui.h"
#include "cvaux.h"
#include "ml.h"
#include "cxcore.h"
#include "cvcam.h"
CvHaarClassifierCascade *load_object_detector( const char* cascade_path )
{
return (CvHaarClassifierCascade*)cvLoad( cascade_path );
}
void main()
{
IplImage *image = cvLoadImage( "E:/MX/lunwen/opencv/lena1.jpg",1);
CvMat stub,*img = (CvMat*)image;
CvMat *temp=0,*sum = 0, *tilted = 0, *sqsum = 0;
int face=0;
const char cascade_path[]="E:/MX/lunwen/opencv/haarcascade_frontalface_alt2.xml";
if( image != 0 )
{
img = cvGetMat( image, &stub, 0);
temp = cvCreateMat( img->rows, img->cols, CV_8UC1 );
sum = cvCreateMat( img->rows + 1, img->cols + 1, CV_32SC1 );
sqsum = cvCreateMat( img->rows + 1, img->cols + 1, CV_64FC1 );
tilted = cvCreateMat( img->rows + 1, img->cols + 1, CV_32SC1 );
if( CV_MAT_CN(img->type) > 1 )
{
cvCvtColor( img, temp, CV_BGR2GRAY );
img = temp;
}
CvHaarClassifierCascade* cascade = load_object_detector(cascade_path);
cvIntegral( img, sum, sqsum, tilted );
cvNamedWindow( "test", CV_WINDOW_AUTOSIZE );
cvShowImage( "test", img );
cvSetImagesForHaarClassifierCascade( cascade, sum, sqsum, tilted, 1 );
CvPoint ptr= {0,0};
face= cvRunHaarClassifierCascade(cascade, ptr, 0); //在图中是否有人臉
if(face>0)
{
printf("the detect succ!!!!!!!!!!\n");
printf("the value of face is:%d\n",face);
}
else
printf("the detect error!!!!!!!!!\n");
cvReleaseHaarClassifierCascade(&cascade);
printf("the detect result is:%d\n",face);
cvWaitKey(0);
cvReleaseHaarClassifierCascade( &cascade );
cvReleaseImage( &image );
}
} |