【Opencv学习】摄像头采集、录像、截图小工具

作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/

/*
* =====================================================================================
*
* Filename: videocapture.cpp
*
* Description: A Program of Capture the video Camrea 本程序可以进行摄像头采集、录像(按键 r)和截图(鼠标左键)
*
* 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 
#include 
#include 

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/

posted @ 2012-12-09 15:28  gnuhpc  阅读(4986)  评论(0编辑  收藏  举报