嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元微信扫码支付:2 元
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
/* Video Capture using DirectShow */
/* CameraDS.cpp: CameraDS类的实现 */
/* 检测人脸位置,并在特征位置上显示字符串 */
/* 人脸检测和特征部位描绘用Opencv 实现 */
/************************************************************************/
/* 检测人脸位置 */
/************************************************************************/
void DetectFace( int came_id )
{
CCameraDS camera;
char option = 'N';
IplImage * frame = NULL;
CF_Handle hdl = NULL;
void* window;
//HMONITOR hMonitor;
//LPMONITORINFO lpMonitorInfo;
if( InitDetect( &hdl ) ) //CF句柄的初始化
{
printf("CF组件初始化失败!\n");
return ;
}
//printf( "提示:\n" );
//printf( "退出请按q。\n" );
//打开摄像头
//if( ! camera.OpenCamera( came_id , true) ) //弹出属性选择窗口 可以换成
if(! camera.OpenCamera(came_id, false, 320,240))
//不弹出属性选择窗口,用代码制定图像宽和高
{
printf( "不能打开摄像头。\n");
return ;
}
cvNamedWindow("人脸检测");
//CRect rc1;
//GetClientRect(&rc1);//获取视图的客户区矩形
//SystemParametersInfo(SPI_GETWORKAREA, 0, (PVOID) &rc1, 0);//得到桌面客户区的大小
//GetMonitorInfo(hMonitor, lpMonitorInfo);
cvMoveWindow("人脸检测",(1280-320-25),5);
while( true )
{
frame = camera.QueryFrame(); //获取一帧
Detect_and_Draw( frame, &hdl );
window = cvGetWindowHandle("人脸检测");
if( window == NULL)
{
cvNamedWindow("人脸检测");
cvMoveWindow("人脸检测",(1280-320-25),5);
}
cvShowImage("人脸检测", frame); //显示
option = cvWaitKey(10);
if( option == 'q' )
{
break;
}
window = cvGetWindowHandle("人脸检测");
if( window == NULL)
{
cvNamedWindow("人脸检测");
cvMoveWindow("人脸检测",(1280-320-25),5);
}
}
camera.CloseCamera();
cvDestroyWindow("人脸检测"); //释放窗口
FreeDetect( &hdl ); //释放CF句柄
}