C++的一段人脸检测 好心人帮我注释下 实在不懂

[复制链接]
查看11 | 回复2 | 2010-5-17 10:58:52 | 显示全部楼层 |阅读模式
static CvMemStorage* storage = 0;//创建动态内存
static CvHaarClassifierCascade* cascade = 0;
void detect_and_draw( IplImage* image );
const char* cascade_name =

"haarcascade_frontalface_alt.xml";//分类器名称
int main( int argc, char** argv )
{

CvCapture* capture = 0;

IplImage *frame, *frame_copy = 0;

int optlen = strlen("--cascade=");

const char* input_name;

if( argc > 1 && strncmp( argv[1], "--cascade=", optlen ) == 0 )

{

cascade_name = argv[1] + optlen;

input_name = argc > 2 ? argv[2] : 0;

}

else

{

cascade_name = "F:/OpenCV/data/haarcascades/haarcascade_frontalface_alt2.xml";

input_name = argc > 1 ? argv[1] : 0;

}

cascade = (CvHaarClassifierCascade*)cvLoad( cascade_name, 0, 0, 0 );



if( !cascade )

{

fprintf( stderr, "ERROR: Could not load classifier cascade\n" );

fprintf( stderr,

"Usage: facedetect --cascade=\"\" [filename|camera_index]\n" );

return -1;

}

storage = cvCreateMemStorage(0);



if( !input_name || (isdigit(input_name[0]) && input_name[1] == '\0') )

capture = cvCaptureFromCAM( !input_name ? 0 : input_name[0] - '0' );

else

capture = cvCaptureFromAVI( input_name );

cvNamedWindow( "result", 1 );
{

const char* filename = input_name ? input_name : (char*)"lena.jpg";

IplImage* image = cvLoadImage( "d:/lena.jpg", 1 );/*直接用图片所在路径*/

if( image )

{

detect_and_draw( image );

cvWaitKey(0);

cvReleaseImage( &image );

}

else

{

/* assume it is a text file containing the

list of the image filenames to be processed - one per line */

FILE* f = fopen( filename, "rt" );

if( f )

{

char buf[1000+1];

while( fgets( buf, 1000, f ) )

{

int len = (int)strlen(buf);

while( len > 0 && isspace(buf[len-1]) )

len--;

buf[len] = '\0';

image = cvLoadImage( buf, 1 );

if( image )

{

detect_and_draw( image );

cvWaitKey(0);

cvReleaseImage( &image );

}

}

fclose(f);

}

}

}



cvDestroyWindow("result");

return 0;
}
分不是很多麻烦好心人帮我注释下了

回复

使用道具 举报

千问 | 2010-5-17 10:58:52 | 显示全部楼层
不是很难的程序阿,opencv的书看的不够,你再仔细看看书大体上就是读取图像,调用detect_and_draw函数分析了
回复

使用道具 举报

千问 | 2010-5-17 10:58:52 | 显示全部楼层
去找opencv的说明文档去看。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行