從影片中擷取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);
}
編譯結果:


程式碼
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);
}
編譯結果:
謝謝你的分享!! 幫了我很大的忙! =)
回覆刪除