IplImage* pFrame = 0;
IplImage* pFrame2 = 0;
CvCapture* pCapture = 0;
CvRect box;
box=cvRect(200,50,256,256);
//设置两个状态标志量
int c,num=0;
char key;
CString str;
if(!(pCapture = cvCaptureFromCAM(-1)))
{
MessageBox("Error 8:\r\n 摄像头无法打开,请查证","提示",48);
return;
}
cvNamedWindow("请保证唇部进入取景区域",CV_WINDOW_AUTOSIZE);
cvMoveWindow("请保证唇部进入取景区域",100,100);
//连续抓取图像并在Camera窗口显示(实现摄像功能)等待按键
while(pFrame = cvQueryFrame(pCapture))
{
cvRectangle (pFrame, cvPoint(box.x,box.y), cvPoint(box.x+box.width,box.y+box.height), cvScalar(0xff,0x00,0x00));
key=cvWaitKey(50);
//按回车键后再创建一个窗口,将按键时的图像截取显示出来
if(key==13)
{
cvNamedWindow("Image",CV_WINDOW_AUTOSIZE);
cvMoveWindow("Image",500,100);
pFrame2 = cvQueryFrame(pCapture);
cvRectangle (pFrame2, cvPoint(box.x,box.y), cvPoint(box.x+box.width,box.y+box.height), cvScalar(0xff,0x00,0x00));
while(1)
{
cvShowImage( "Image", pFrame2 );
if((c=cvWaitKey(50))>=0)
break;
}
str.Format("Image%d.bmp",num);
cvSaveImage(str,pFrame2);
cvDestroyWindow("Image");
//再次按键截取下一张图片
if(cvWaitKey(50)> 0)
{
cvReleaseImage(&pFrame);
cvReleaseCapture(&pCapture);
cvDestroyWindow("请保证唇部进入取景区域");
break;
}
}
if(key==27)//等待ESC键
{
break;
cvReleaseImage(&pFrame);
cvReleaseCapture(&pCapture);
cvDestroyWindow("请保证唇部进入取景区域");
}
cvShowImage("请保证唇部进入取景区域",pFrame);
}
IplImage* pFrame2 = 0;
CvCapture* pCapture = 0;
CvRect box;
box=cvRect(200,50,256,256);
//设置两个状态标志量
int c,num=0;
char key;
CString str;
if(!(pCapture = cvCaptureFromCAM(-1)))
{
MessageBox("Error 8:\r\n 摄像头无法打开,请查证","提示",48);
return;
}
cvNamedWindow("请保证唇部进入取景区域",CV_WINDOW_AUTOSIZE);
cvMoveWindow("请保证唇部进入取景区域",100,100);
//连续抓取图像并在Camera窗口显示(实现摄像功能)等待按键
while(pFrame = cvQueryFrame(pCapture))
{
cvRectangle (pFrame, cvPoint(box.x,box.y), cvPoint(box.x+box.width,box.y+box.height), cvScalar(0xff,0x00,0x00));
key=cvWaitKey(50);
//按回车键后再创建一个窗口,将按键时的图像截取显示出来
if(key==13)
{
cvNamedWindow("Image",CV_WINDOW_AUTOSIZE);
cvMoveWindow("Image",500,100);
pFrame2 = cvQueryFrame(pCapture);
cvRectangle (pFrame2, cvPoint(box.x,box.y), cvPoint(box.x+box.width,box.y+box.height), cvScalar(0xff,0x00,0x00));
while(1)
{
cvShowImage( "Image", pFrame2 );
if((c=cvWaitKey(50))>=0)
break;
}
str.Format("Image%d.bmp",num);
cvSaveImage(str,pFrame2);
cvDestroyWindow("Image");
//再次按键截取下一张图片
if(cvWaitKey(50)> 0)
{
cvReleaseImage(&pFrame);
cvReleaseCapture(&pCapture);
cvDestroyWindow("请保证唇部进入取景区域");
break;
}
}
if(key==27)//等待ESC键
{
break;
cvReleaseImage(&pFrame);
cvReleaseCapture(&pCapture);
cvDestroyWindow("请保证唇部进入取景区域");
}
cvShowImage("请保证唇部进入取景区域",pFrame);
}
解决方案 »
- 关于配置的低端问题,mfc工程调用另一个简单c++工程出错
- 关于EDIT控件的弱智问题,耽误大虾2分钟时间解答下,谢谢!
- 请教怎样实现金山打字通中的键盘效果,急!!
- 怎样编写打印/预览程序?
- 请教,SetPixel函数HDC参数的应用
- 请问在发送消息时,怎么指定发送消息的窗口?
- 关于CDateTime控件问题
- 在listctrl中sortItems所用的排序算法是什么啊?
- 如何知道系统启动一个新的进程,并找到该进程的ID和窗口句柄
- *****请问各位高人,怎么样才能根据对方的IP地址,获得对方所在地!!!谢谢*******
- 作为一个无证程序员,我压力很大
- 多线程 同一个入口函数,如果安全退出线程
这个不久是在关闭摄像头吗?
要退出程序,可以像程序发送WM_QUIT就可以了撒。