4、批量读取图片、视频分解、视频合成

xiaoxiao2021-02-28  185

批量有序读取图片

#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(); }
转载请注明原文地址: https://www.6miu.com/read-80641.html

最新回复(0)