1.批量读取图片
#include<opencv2/opencv.hpp>
using namespace cv;
void main()
{
//批量读取图片(有序)
char filename[50];
char winName[50];
Mat srcImg;
for (int i = 1; i < 100; i++)
{
sprintf(filename,"%d.bmp",i);
sprintf(winName,"NO--%d",i);
srcImg=imread(filename);
if (srcImg.empty())
break;
imshow(winName,srcImg);
}
waitKey(0);
destroyAllWindows();
}
2.视频分解图片
#include<opencv2/opencv.hpp>
using namespace cv;
void main()
{
Mat frame;
char outfile[50];
VideoCapture cap("E:\\2.avi");
if (!cap.isOpened())//打开失败
return;
int totalFrame=cap.get(CV_CAP_PROP_FRAME_COUNT);//获取视频总帧数
for (int i = 1; i <=totalFrame; i++)
{
cap>>frame;
if (frame.empty())
break;
sprintf(outfile,"E:\\pic\\%d.bmp",i);
imwrite(outfile,frame);
imshow("video",frame);
waitKey(15);
}
cap.release();
destroyAllWindows();
}
3.图片合成视频
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std;
void main()
{
VideoWriter writer("E:\\out.avi",CV_FOURCC('X','V','I','D'),20,Size(320,240),true);//Size要和图片尺寸保持一致
char filename[50];
Mat frame;
for (int i = 1; i < 644; i++)
{
sprintf(filename,"E:\\pic\\%d.bmp",i);
frame=imread(filename);
if(frame.empty()) break;
writer<<frame;
}
cout<<"write end!"<<endl;
destroyAllWindows();
}