一、批量有序读取图片
【示例】
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 }