一、批量有序读取图片
【示例】
1 //批量有序读取图片 2 #include <opencv2/opencv.hpp> 3 #include <iostream> 4 #include <stdio.h> 5 6 using namespace std; 7 using namespace cv; 8 9 int main() 10 { 11 //批量读取图片(有序) 12 char filename[50]; 13 char winName[50]; 14 Mat srcImg; 15 for (int i = 1; i < 100; i++) 16 { 17 sprintf(filename,"%d.bmp",i); 18 sprintf(winName,"NO--%d",i); 19 srcImg=imread(filename); 20 if (srcImg.empty()) 21 break; 22 imshow(winName,srcImg); 23 } 24 waitKey(0); 25 destroyAllWindows(); 26 return 0; 27 }
二、视频分解成图片
【示例】
//视频分解成图片 #include <opencv2/opencv.hpp> #include <stdio.h> using namespace cv; int main() { Mat frame; char outfile[50]; VideoCapture cap("../../1.mp4"); if (!cap.isOpened())//打开失败 return -1; int totalFrame=cap.get(CV_CAP_PROP_FRAME_COUNT);//获取视频总帧数 for (int i = 1; i <=totalFrame; i++) { cap>>frame; if (frame.empty()) break; sprintf(outfile,"%d.bmp",i); imwrite(outfile,frame); imshow("video",frame); waitKey(15); } cap.release(); destroyAllWindows(); return 0; }
三、图片合成视频
【示例】
1 //图片合成视频 2 #include<opencv2/opencv.hpp> 3 #include<iostream> 4 #include<stdio.h> 5 6 using namespace cv; 7 using namespace std; 8 9 int main() 10 { 11 VideoWriter writer("out.avi",CV_FOURCC('X','V','I','D'),20,Size(544,960),true);//Size要和图片尺寸保持一致 12 char filename[50]; 13 Mat frame; 14 for (int i = 1; i < 301; i++) 15 { 16 sprintf(filename,"%d.bmp",i); 17 frame=imread(filename); 18 if(frame.empty()) break; 19 writer<<frame; 20 } 21 cout<<"write end!"<<endl; 22 destroyAllWindows(); 23 24 return 0; 25 }