zoukankan      html  css  js  c++  java
  • 【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/


                   作者:gnuhpc
                   出处:http://www.cnblogs.com/gnuhpc/
                   除非另有声明,本网站采用知识共享“署名 2.5 中国大陆”许可协议授权。


    分享到:

  • 相关阅读:
    Android listview addHeaderView 和 addFooterView 详解
    android NDK 生成so 文件流程-ecplice
    PopupWindow+ListView+OnItemClick点击无效
    绘制圆动画--重写view
    绘制 ToggleButton --重写view
    ProgressBar 源码
    android rectF
    ActionBar
    Android源码
    子线程更新主线程的方法-转
  • 原文地址:https://www.cnblogs.com/gnuhpc/p/2810093.html
Copyright © 2011-2022 走看看