批量有序读取图片
#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();
}
视频分解成图片
#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();
}
图片合成视频
#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(
568,
320),
true);
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();
}