OpenCV---图片生成视频
Opencv 图片 生成 视频 ---
2023-09-27 14:27:01 时间
/** It is a batch processing interface. */ #include "stdafx.h" #include <windows.h> #include <Shlwapi.h> #include <iostream> #include <string> #include <vector> #include <opencv.hpp> #pragma comment(lib,"shlwapi.lib") //注意放置的位置 using namespace std; using namespace cv; /****************************************** func:findfile decs:find all file name in a directory @param dir the aerial image set directory @param fileset image file name set in the 'dir' @return null ******************************************/ void findFile(string dir,vector<string> &fileset) { WIN32_FIND_DATAA stFD ; //存放文件信息的结构体 HANDLE h; string temp; temp=dir+"\\*"; h=FindFirstFileA(temp.c_str(),&stFD); //构建文件夹句柄 while(FindNextFileA(h,&stFD)) //提取文件夹句柄相应文件夹所包括的文件 { temp=dir+"\\"+stFD.cFileName; if(temp==dir+"\\..") //上一级路径 { continue; } else if(PathIsDirectoryA(temp.c_str()) ) //包括子文件夹 { findFile(temp,fileset); //递归调用 } else { //cout<<stFD.cFileName<<endl; //打印文件名称 fileset.push_back(stFD.cFileName); } } return ; } /****************************************** func:make_video decs:generate video based on image set @param dir the image set path @param videoPath video path @param frameRate frame rate @param return null ******************************************/ void make_video(string dir, string videoPath,int frameRate) { vector<string> fileset; Size frameSize; VideoWriter writer; findFile(dir,fileset); vector<string>::iterator it=fileset.begin(); string filename; while(it!=fileset.end()) { cout<<"---------------------------------------------"<<endl; filename=dir+*it; cout<<filename<<endl; it++; Mat frame; frame = imread(filename); // 读入图片 if (!writer.isOpened()) { frameSize.width = frame.cols; frameSize.height = frame.rows; if (!writer.open("matching_video.avi", CV_FOURCC('D','I','V','X') , frameRate, frameSize, true)) { cout << "open writer error..." << endl; return -1; } } // 将图片数据写入 writer.write(frame); // 显示 imshow("video", frame); waitKey(frameRate); } return; } int main(void) { string dir,videoPath; int frameRate; //dir=".\\shan_xi_aerial\\"; //dir="E:\\pic\\shan_xi_aerial\\"; dir="D:\\我的文档\\Documents\\Visual Studio 2010\\Projects\\speed_sift\\speed_sift\\result\\"; videoPath="matching_video.avi"; frameRate=25; make_video(dir,videoPath,frameRate); cout<<"Generate video \""<<videoPath<<"\" OK!!!"<<endl; system("pause"); return 0; }
相关文章
- 【深度学习】PIL 和 opencv 以及numpy 和 plt 对图片的操作细节
- 【opencv 系列】第2章 图片&视频的读取和保存
- 【计算机视觉】OpenCV读取视频获取时间戳等信息(PS:经测试并不是时间戳,与FFMPEG时间戳不一样)
- OpenCV在ARM-linux上的移植过程遇到的问题3---共享库中嵌套库居然带路径【未解决】
- OpenCV Facial Landmark Detection 人脸关键点检测
- 基于OpenCV实现两种方法测量圆弧长度(步骤 + 源码)
- OpenCVSharp(C# OpenCV)图片自动生成彩虹特效(附源码)
- OpenCV图像无缝融合-seamlessClone介绍与使用(附Python/C++源码)
- OpenCV+TensorFlow图片手写数字识别(附源码)
- Python + vs +Opencv
- Opencv-python官方学习入门资料,vs+python+opencv初识读图片打开相机
- C++ opencv imread读不进来图片
- opencv高速下载
- OpenCV图像处理——边缘检测
- 具有Python&OpenCV的本地二进制模式
- 1.0.x-学习Opencv与MFC混合编程之---视频运动检测
- python opencv 重置图片大小,旋转图片