资源简介
在VC6.0环境下,借助openCV函数库,对视频中的人脸进行检测,并实时跟踪,然后用Haar特征的分类器定位人脸,并检测瞳孔存在与否,提取关于眼睛的疲劳信息
代码片段和文件信息
#include“nod.h“
#include“face_detec.h“
#include“eye_detec.h“
#include“face_genzong.h“
#include“seqList.h“
#include “mmsystem.h“//导入声音头文件
#pragma comment(lib“winmm.lib“)//导入声音头文件库
#include“subImage.h“
#include“pupilDetc.h“
#include
#include
#include
#include
#include
#include
//检测用到的各种级联分类器
const char* cascade_fname =
“haarcascade_frontalface_alt2.xml“;
const char* cascade_mname =
“Boca.xml“;
const char* cascade_elname =
“haarcascade_lefteye_2splits.xml“;
const char* cascade_ername =
“haarcascade_righteye_2splits.xml“;
int main( int argc char** argv )
{
CvCapture* capture=0;//视频初始化
IplImage* frame*frame_copy=0;
const char* input_name;//输入的视频文件的处理
input_name=argc>1?argv[1]: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 );
//人脸分类器的加载
cascade_face = (CvHaarClassifierCascade*)cvLoad( cascade_fname 0 0 0 );
//左眼分类器加载
cascade_el = (CvHaarClassifierCascade*)cvLoad( cascade_elname 0 0 0 );
if( !cascade_face )
{
fprintf( stderr “ERROR: Could not load classifier face\n“ );
fprintf( stderr
“Usage: facedetect --cascade=\“\“ [filename|camera_index]\n“ );
return -1;
}
if( !cascade_el )
{
fprintf( stderr “ERROR: Could not load classifier eyeleft\n“ );
fprintf( stderr
“Usage: facedetect --cascade=\“\“ [filename|camera_index]\n“ );
return -1;
}
storage = cvCreateMemStorage(0);//人脸检测用的内存快
storage_el = cvCreateMemStorage(0);//眼睛检测用的内存快
cvNamedWindow( “Histogram“CV_WINDOW_AUTOSIZE );
cvNamedWindow( “FaceTrack“CV_WINDOW_AUTOSIZE );
cvNamedWindow(“EyeOrient“CV_WINDOW_AUTOSIZE);
cvNamedWindow(“Eye“CV_WINDOW_AUTOSIZE);
cvNamedWindow(“Pupil“CV_WINDOW_AUTOSIZE);
cvCreateTrackbar( “Vmin“ “FaceTrack“ &vmin 256 0 );
cvCreateTrackbar( “Vmax“ “FaceTrack“ &vmax 256 0 );
cvCreateTrackbar( “Smin“ “FaceTrack“ &smin 256 0 );
//提取点头疲劳信息的结构
SeqList nodSeq(15);//记录头部位置的顺序表
int numOfframe=0;//帧数记录器
int avgHeightOfHead=0;//头部位置的平均距离
int numOfFatigue=0;//疲劳帧数的记录器
int threshNod=10;//nod 阈值,初步设定为10
//提取点头疲劳信息的结构
//提取眼睛疲劳信息的结构
int numOfFatigueEye=0;
IplImage* img4Eye=0*eyeimg;
float pupilThreth=109;//瞳孔检测二值化的阈值
//提取眼睛疲劳信息的结构
if(!capture)
{
return -1;
}
//检测人脸,为下一步的跟踪提供图像源//
if(!cvGrabframe(capture))
return -1;
frame=cvRetrieveframe(capture);
if(!frame)
return -1;
if(selection.width==0||selection.height==0||selection.height/selection.width>2||selection.height/selection.width<1)
{
if(!frame_copy)
frame_copy = cvCreateImage( cvSize(frame->widthframe->height)
IPL_DEPTH_8U frame->nChannels );
if( frame->origin == IPL_ORIGIN
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2011-07-24 20:31 pilao_diantou\
文件 1557 2011-07-22 10:36 pilao_diantou\aaa.jpg
文件 209452 2009-06-07 01:47 pilao_diantou\ALARM.WAV
文件 141 2011-07-22 16:54 pilao_diantou\blackpixcount.h
文件 994519 2006-11-13 10:17 pilao_diantou\Boca.xm
目录 0 2011-07-24 20:30 pilao_diantou\Debug\
文件 217157 2011-07-24 20:30 pilao_diantou\Debug\pilao_diantou.exe
文件 447116 2011-07-24 20:30 pilao_diantou\Debug\pilao_diantou.ilk
文件 62241 2011-07-24 20:30 pilao_diantou\Debug\pilao_diantou.obj
文件 4288476 2011-07-24 20:30 pilao_diantou\Debug\pilao_diantou.pch
文件 631808 2011-07-24 20:30 pilao_diantou\Debug\pilao_diantou.pdb
文件 189440 2011-07-24 20:30 pilao_diantou\Debug\vc60.idb
文件 110592 2011-07-24 20:30 pilao_diantou\Debug\vc60.pdb
文件 2249 2011-07-24 19:54 pilao_diantou\eye_detec.h
文件 2047 2011-07-24 19:08 pilao_diantou\face_detec.h
文件 1239 2011-07-21 20:33 pilao_diantou\face_genzong.h
文件 837462 2005-03-16 23:18 pilao_diantou\haarcascade_frontalface_alt2.xm
文件 323227 2011-07-08 10:57 pilao_diantou\haarcascade_lefteye_2splits.xm
文件 324586 2011-07-08 10:57 pilao_diantou\haarcascade_righteye_2splits.xm
文件 100 2011-07-24 19:23 pilao_diantou\nod.h
文件 10030 2011-07-24 19:59 pilao_diantou\pilao_diantou.cpp
文件 4948 2011-07-24 20:31 pilao_diantou\pilao_diantou.dsp
文件 549 2011-07-10 15:18 pilao_diantou\pilao_diantou.dsw
文件 66560 2011-07-24 20:31 pilao_diantou\pilao_diantou.ncb
文件 56832 2011-07-24 20:31 pilao_diantou\pilao_diantou.opt
文件 260 2011-07-24 20:30 pilao_diantou\pilao_diantou.plg
文件 1931 2011-07-24 20:30 pilao_diantou\pupilDetc.h
文件 304 2011-07-21 08:28 pilao_diantou\pupilDetect.h
文件 1853440 2007-06-05 03:22 pilao_diantou\Sample.avi
文件 2136 2011-07-24 19:14 pilao_diantou\seqList.h
文件 1761 2011-07-22 15:01 pilao_diantou\subImage.h
............此处省略0个文件信息
- 上一篇:江苏C语言二级试题真题集
- 下一篇:一个会朗读文本的MFC应用程序
评论
共有 条评论