opencv realizes timing recording function

  • 2020-06-07 04:54:12
  • OfStack

As a powerful machine vision library, opencv is favored by image processing developers for its simplicity. Now I'll show you how to use opencv to implement timed video recording and save it in real time as the file name. There have been some similar codes on the Internet before, but most netizens reported that the program could not be executed, mainly for two reasons. There is no video encoder installed on the computer, XviD is recommended here, it is not easy to download on the Internet, you can send it to me privately or leave your email, I will send it all. Then I chose 'X', 'V', 'I', 'D', which is the common avi format.


  #include "cv.h"  
  #include "cxcore.h"  
  #include "highgui.h"  
  #include <iostream>  
  #include <time.h> 
  #include <Windows.h> 
  #include <Mmsystem.h> 
  #include "stdio.h"  
  int timea=100000;  
  using namespace std;  
/*void times() 
{ 
  SYSTEMTIME sys_time; 
 
  // Sets the variable value to local time  
  GetLocalTime( &sys_time ); 
 
  // The output of time  
  printf( "%4d/%02d/%02d %02d:%02d:%02d.%03d  week %1d\n",sys_time.wYear, 
    sys_time.wMonth, 
    sys_time.wDay, 
    sys_time.wHour, 
    sys_time.wMinute, 
    sys_time.wSecond, 
    sys_time.wMilliseconds, 
    sys_time.wDayOfWeek); 
 
 // system("time"); 
  // 
 // system("pause"); 
  return 0; 
 
 
} */ 
  int main()  
  {  
    CvCapture* capture=cvCaptureFromCAM(0);  
    CvVideoWriter* video=NULL;  
    IplImage* frame=NULL;  
    int n;  
    if(!capture) // Give a warning if you can't turn on the camera   
    {  
     cout<<"Can not open the camera."<<endl;  
     return -1;  
    }  
    else  
    {  
     frame=cvQueryFrame(capture); // So let's get the one in the camera 1 frame   
    int c=0; 
    SYSTEMTIME sys_time; 
 
  // Sets the variable value to local time  
    GetLocalTime( &sys_time ); 
    char buf[1024]; 
    sprintf(buf,"camera-%4d-%2d-%02d-%02d-%02d-%02d.avi",sys_time.wYear,sys_time.wMonth,sys_time.wDay, 
    sys_time.wHour,sys_time.wMinute, sys_time.wSecond);  
 
      video=cvCreateVideoWriter(buf, CV_FOURCC('X', 'V', 'I', 'D'), 25,  
     cvSize(frame->width,frame->height)); // create CvVideoWriter Object and allocate space   
  // The file name is saved camera.avi The size is the size of the camera's video, and the frame rate is 32  
     if(video) // If I can create CvVideoWriter Object indicates success   
      {  
       cout<<"VideoWriter has created."<<endl;  
     }  
   cout<<"set the record time\n"<<endl;// Set recording time  
   cin>>timea; 
   int ti=timea*25; 
    
    
     cvNamedWindow("Camera Video",1); // new 1 A window   
      int i = 0;  
     while(i <= ti) //  Let it loop ti The admission is automatically suspended   
      {  
       frame=cvQueryFrame(capture); // from CvCapture gain 1 frame   
       if(!frame)  
       {  
        cout<<"Can not get frame from the capture."<<endl;  
        break;  
       }  
       n=cvWriteFrame(video,frame); // Determines whether the write was successful, if yes is returned 1 , indicates that the write was successful   
       // cout<<n<<endl;  
       cvShowImage("Camera Video",frame); // A picture showing the content of a video   
       i++;  
       if(cvWaitKey(2)>0)   
        break; // Exit if there is another keyboard response   
     }  
    
     cvReleaseVideoWriter(&video); // If you do not release, spring will not  
     cvReleaseCapture(&capture);  
     cvDestroyWindow("Camera Video");  
    }  
    return 0;  
  }  

Related articles: