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

  1. /* 
  2.  * ===================================================================================== 
  3.  * 
  4.  *       Filename:  videocapture.cpp 
  5.  * 
  6.  *    Description:  A Program of Capture the video Camrea 
  7.  * 
  8.  *        Version:  1.0 
  9.  *        Created:  02/02/2009 09:48:27 AM 
  10.  *       Revision:  none 
  11.  *       Compiler:  gcc 
  12.  * 
  13.  *         Author:  Futuredaemon (BUPT), gnuhpc@gmail.com 
  14.  *        Company:  BUPT_UNITED 
  15.  * 
  16.  * ===================================================================================== 
  17.  */  
  18.   
  19. #include "cv.h"  
  20. #include "highgui.h"  
  21. #include <stdio.h>  
  22. #include <ctype.h>  
  23. #include  <time.h>  
  24.   
  25. IplImage *frame=0;  
  26.   
  27. void mouseHandler(int event,int x,int y,int flags,void *param);  
  28.   
  29. int main(int argc , char **argv)  
  30. {  
  31.     CvCapture *capture = 0;  
  32.   
  33.     int flag= 1;  
  34.   
  35.     int iscolor=1;  
  36.     int fps=15;  
  37.     int frameW=320;  
  38.     int frameH=240;  
  39.     int press=0;  
  40.     CvVideoWriter    *writer=cvCreateVideoWriter("out.avi",CV_FOURCC('D','I','V','X'),  
  41.             fps,cvSize(frameW,frameH),iscolor);  
  42.   
  43.     if (argc==1|| (argc==2 && strlen(argv[1])==1 && isdigit(argv[1][0])))  
  44.     {  
  45.         capture = cvCaptureFromCAM(-1);  
  46.     }  
  47.     else if(argc==2)  
  48.     {  
  49.         capture = cvCaptureFromAVI(argv[1]);  
  50.     }  
  51.   
  52.     if (!capture)  
  53.     {  
  54.         fprintf(stderr,"Could not initialize capturing.../n");  
  55.         return -1;  
  56.     }  
  57.   
  58.     cvNamedWindow("main",0);  
  59.   
  60.     cvSetMouseCallback("main",mouseHandler,NULL);  
  61.     for (;;)  
  62.     {  
  63.   
  64.         frame = cvQueryFrame(capture);  
  65.         if (!frame)  
  66.         {  
  67.             break;  
  68.         }  
  69.   
  70.         if( flag==0 )  
  71.         {  
  72.             cvWriteFrame(writer,frame);  
  73.         }  
  74.   
  75.         cvShowImage("main",frame);  
  76.   
  77.         if ((press=cvWaitKey(20))=='r')  
  78.         {  
  79.              if( flag==1 )  
  80.              {  
  81.                  printf("Starting Record the Video!/n");  
  82.                  flag = 0;  
  83.              } else  
  84.              {  
  85.                  printf("Stop the recording!/n");  
  86.                  flag = 1;  
  87.              }  
  88.         }  
  89.         else if(press==27)  
  90.         {  
  91.             break;  
  92.         }  
  93.   
  94.     }  
  95.      
  96.     cvReleaseCapture(&capture);  
  97.     cvDestroyWindow("main");  
  98.     return 0;  
  99. }  
  100.   
  101. void mouseHandler(int event,int x,int y,int flags,void *param)  
  102. {  
  103.     time_t curtime=time(NULL);  
  104.     char *date=ctime(&curtime);  
  105.   
  106.     switch ( event )  
  107.     {  
  108.         case CV_EVENT_LBUTTONDOWN :  
  109.             printf("Get a picrure named %s/n",date+11);  
  110.             sprintf(date,"%s.jpg",date+11);  
  111.             cvSaveImage(date,frame);  
  112.             break;  
  113.         default :  
  114.             break;  
  115.     }  
  116. }  

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值