BloggerAds

2014年8月13日 星期三

[OpenCV] 從影片中擷取frame並轉換成圖片存到資料夾

從影片中擷取frame並轉存圖片格式,存在資料夾,程式碼如下


程式碼


void video_frame()
{

   CvCapture* capture ;
   IplImage* frame ;
   int index = 0;
   char file_index[10] ;
   char filename[256];
   char address[256];
   cvNamedWindow("video",1); //設定視窗(0=全螢幕,1=適當大小)
   capture = cvCreateFileCapture("video1.avi"); //讀取影片
   cout<<"請按Q或q進行截圖"<<endl;
   
      while(1){
          frame = cvQueryFrame(capture); //把影片切成frame
          cvShowImage("video",frame); //播放 [參數(視窗名稱, frame)]
          // 播放完畢即退出
          if(!frame){
              break ;
          }
       
          int key = cvWaitKey(10); // 每10m播放一張frame並予以按件值
          switch(key){
             
               case 27:           // 27對應鍵盤的Esc鍵
                     exit(0);
               break;
             
               case 'Q':           //按下Q或q截圖
               case 'q':    
// 格式化字串 file_index =000 001....
                      sprintf(file_index,"%03d",index++);
// 字串複製  "video_img丟到filename"
                      strcpy(filename,"video_img");
                      strcpy(address,"C:\\Users\\user\\Desktop\\video\\picture\\");

//連結字串   address與filename連接並丟給address
 strcat(address,filename);
//連結字串 address與編號連接
 strcat(address,file_index);
                        //連結字串  address.jpg
                      strcat(address,".jpg");
                     
                      cvSaveImage(address, frame );//將分割的frame存檔
                      printf("Image file %s saved.\n", address);

          }
        }

        cvDestroyWindow("video");
        cvReleaseCapture(&capture);

    }

編譯結果:











1 則留言: