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

/*
* =====================================================================================
*
* 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;
}
}

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/gnuhpc/archive/2009/07/21/4368888.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值