opencv:批量读取一个文件夹下的图片,并转换成视频
来源:互联网 发布:p2p种子搜索器mac版 编辑:程序博客网 时间:2024/05/01 13:10
转载请注明:http://blog.csdn.net/ding977921830/article/details/50950927
//#include "stdAfx.h"#include <opencv2/core/core.hpp>#include <opencv2\highgui\highgui.hpp>#include <iostream>#include <direct.h>//for mk_dir#include <io.h>//for _acess()using namespace cv;using namespace std;int recursive_mkdir( char *dir );//创建多级目录int ImageToVideo(char* outDir,char* videoName,char* inputDir,int startFrame,int endFrame, int imgW, int imgH,char* imgExt,double fps,int isColor,int fourcc);//图片序列转化为视频 int main(int argc, char** argv) { char* inputDir="F:\\论文视频库\\视频帧库\\Walking\\"; //一定要加上最后的两个双斜线,输入视频帧的目录 char* videoName="Walking.avi"; //输出的视频名字 char* outDir="F:\\论文视频库\\视频帧库\\Walking\\"; //一定要加上最后的两个双斜线,输出的视频的目录 int startFrame = 20; //含义:起始帧 int endFrame = 412; //含义:起始帧,结束帧 int imgW = 768; //含义:视频帧的宽 int imgH = 576; //含义:视频帧的高 char* imgExt = ".jpg"; //根据图片的性质选择.jpg,.bmp等类型,一定要注意jpg前面那个 //点,当时我缺了这个点,浪费了我一晚上的时间才找到问题 double fps=24; //帧率 int isColor=1; //颜色 int fourcc=CV_FOURCC('X','V','I','D'); //CV_FOURCC('X', 'V', 'I', 'D') 表示是XVID库进行压缩,压缩为MPEG4格式 //int frames = 0 ; //总帧数 IplImage *pImg=NULL; char cur_fn[255]; //表示某张图片的绝对路径 char fullVideoName[255]; //输出视频的完整文件名:路径+文件名 int frameCount = startFrame; //计算运行到第N帧 CvVideoWriter *pWriter=NULL; CvSize size=cvSize(imgW,imgH); //判断输入文件夹是否存在 if (_access(inputDir,0)==-1) { cout<<"the input directory does not exist!"<<endl; return 0; } //判断输出文件夹是否创建 若没有则创建;若为NULL则默认当前工作目录 //char fullVideoName[255];//输出视频的完整文件名:路径+文件名 strcpy_s(fullVideoName,""); if (outDir==NULL) { sprintf_s(fullVideoName,"%s",videoName);//把videoName打印成一个字符串保存在fullVideoName 中 } else { if (_access(outDir,0)==-1) { recursive_mkdir(outDir); } sprintf_s(fullVideoName,"%s%s",outDir,videoName);//将字符串outDir和videoName连接起来,打印,保存在fullVideoName中 } pWriter=cvCreateVideoWriter(videoName,fourcc,fps,size,isColor);//CREATE WRITER while(startFrame<=endFrame) { strcpy_s(cur_fn,""); sprintf_s(cur_fn,"%s%d%s",inputDir,startFrame,imgExt);//need to change pImg=cvLoadImage(cur_fn,isColor); if (!pImg) { std::cout<<"can't open an image file"<<std::endl; // return frameCount; } Mat mtx(pImg); // IplImage格式转换成Mat格式 namedWindow("MyWindow", CV_WINDOW_AUTOSIZE); imshow("MyWindow", mtx);cout<<"运行到第 "<< frameCount<<" 帧 "; waitKey(10); // destroyWindow("MyWindow"); cvWriteFrame(pWriter,pImg); cvWaitKey(1); std::cout<<"Write frame "<<startFrame<<std::endl; startFrame++; cvReleaseImage(&pImg); frameCount++; } // cvReleaseVideoWriter(&pWriter); rename(videoName,fullVideoName);//移动文件到指定文件夹 // return frameCount; std::cout<<"total frames "<<frameCount<<" have been write to video."<<std::endl; system("pause"); return 0; } //该函数借鉴了网上资料,自动创建多级目录int recursive_mkdir( char *dir ){ //分解路径名E:\\AA\\BB\\CC\\ // std::string str = dir; int index = 0; int i = 0; while(1) { std::string::size_type pos = str.find("\\",index); std::string str1; str1 = str.substr(0,pos); if( pos != -1 && i > 0 ) { if (_access(str1.c_str(),0)==-1) { _mkdir(str1.c_str()); } } if( pos==-1 ) { break; } i ++; index = pos+1; } return 0;}
参考文献:
http://blog.csdn.net/sway_2012/article/details/7786465
0 0
- opencv:批量读取一个文件夹下的图片,并转换成视频
- opencv:批量读取一个文件夹下的图片,并转换成视频
- opencv 读取一个文件夹下的多张图片并处理保存
- Opencv批量读取文件夹图片
- 从图片文件夹下读取图片并写入AVI视频
- python+opencv 读取文件夹下的所有图像并批量保存ROI
- opencv视频转图片并保存到文件夹下
- opencv中批量读取图片并保存
- opencv中批量读取图片并保存
- opencv 视频分解成图片 图片合成视频 批量读取图片
- 【OpenCV】OpenCV中如何批量读取文件夹中图片
- opencv读取一个文件夹里的所有图片
- opencv读取图片并做成视频
- opencv连续读取文件夹下的图片(python)
- OpenCV批量读取路径下所有图片
- OpenCV:批量读取图片
- 【OpenCV】批量读取图片
- MATLAB批量读取文件夹的图片
- oracle 11g 下载地址
- android 文件关联 mimeType
- Android应用程序安装原理小结
- 实现一个复杂的悬浮窗
- xcode6 下 ios simulator 有 Home 键
- opencv:批量读取一个文件夹下的图片,并转换成视频
- 设计模式文章(一)
- 【iOS】UIFont字体样式设置
- Python Challenge 11
- linux的循环 简介
- Camera360编辑SDK 接入指南(Android)
- Linux Mysql安装问题
- 银联支付、支付宝支付、微信支付三大支付
- 接口与多态的使用