您的位置:首页 > 运维架构

【OpenCV学习】摄像头显示、录像、拍照程序

2012-12-07 10:57 561 查看
作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/

/*
* =====================================================================================
*
*       Filename:  videocapture.cpp
*
*    Description:  A Program of Capture the video Camrea
*
*        Version:  1.0
*        Created:  02/02/2009 09:48:27 AM
*       Revision:  none
*       Compiler:  gcc
*
*         Author:  Futuredaemon (BUPT), gnuhpc@gmail.com
*        Company:  BUPT_UNITED
*
* =====================================================================================
*/

#include "cv.h"
#include "highgui.h"
#include <stdio.h>
#include <ctype.h>
#include  <time.h>

IplImage *frame=0;

void mouseHandler(int event,int x,int y,int flags,void *param);

int main(int argc , char **argv)
{
CvCapture *capture = 0;

int flag= 1;

int iscolor=1;
int fps=15;
int frameW=320;
int frameH=240;
int press=0;
CvVideoWriter    *writer=cvCreateVideoWriter("out.avi",CV_FOURCC('D','I','V','X'),
fps,cvSize(frameW,frameH),iscolor);

if (argc==1|| (argc==2 && strlen(argv[1])==1 && isdigit(argv[1][0])))
{
capture = cvCaptureFromCAM(-1);
}
else if(argc==2)
{
capture = cvCaptureFromAVI(argv[1]);
}

if (!capture)
{
fprintf(stderr,"Could not initialize capturing.../n");
return -1;
}

cvNamedWindow("main",0);

cvSetMouseCallback("main",mouseHandler,NULL);
for (;;)
{

frame = cvQueryFrame(capture);
if (!frame)
{
break;
}

if( flag==0 )
{
cvWriteFrame(writer,frame);
}

cvShowImage("main",frame);

if ((press=cvWaitKey(20))=='r')
{
if( flag==1 )
{
printf("Starting Record the Video!/n");
flag = 0;
} else
{
printf("Stop the recording!/n");
flag = 1;
}
}
else if(press==27)
{
break;
}

}

cvReleaseCapture(&capture);
cvDestroyWindow("main");
return 0;
}

void mouseHandler(int event,int x,int y,int flags,void *param)
{
time_t curtime=time(NULL);
char *date=ctime(&curtime);

switch ( event )
{
case CV_EVENT_LBUTTONDOWN :
printf("Get a picrure named %s/n",date+11);
sprintf(date,"%s.jpg",date+11);
cvSaveImage(date,frame);
break;
default :
break;
}
}


作者:gnuhpc

出处:http://www.cnblogs.com/gnuhpc/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: