zoukankan      html  css  js  c++  java
  • 【OpenCV学习】摄像头显示、录像、拍照程序

    作者: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/


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


    分享到:

  • 相关阅读:
    Fitness
    【代码优化】Unity查漏补缺
    Fitness
    MonoBehaviour生命周期与对象数据池应用
    Fitness
    点、向量、方向在局部与世界坐标系转换的对比
    在企业运营中的感触
    技术杂想2015年夏天
    Heimich manoeuvre 海姆利克氏操作
    徒手CPR心脏复苏
  • 原文地址:https://www.cnblogs.com/gnuhpc/p/2806794.html
Copyright © 2011-2022 走看看