/**
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;
}

OpenCV---图片生成视频的更多相关文章

  1. 基础学习笔记之opencv(6):实现将图片生成视频

    基础学习笔记之opencv(6):实现将图片生成视频 在做实验的过程中.难免会读视频中的图片用来处理,相反将处理好的图片又整理输出为一个视频文件也是非经常常使用的. 以下就来讲讲基于opencv的C+ ...

  2. Python OpenCV图片转视频 工具贴(三)

    Python OpenCV图片转视频 粘贴即用,注意使用时最好把自己的文件按照数字顺序命名.按照引导输入操作. # 一键傻瓜式引导图片串成视频 # 注意使用前最好把文件命名为数字顺序格式 import ...

  3. opencv图片压缩视频并读取

    import os import cv2 import numpy as np import time path = './new_image/' filelist = os.listdir(path ...

  4. Python+Opencv实现把图片转为视频

    1. 安装Opencv包 在Python命令行输入如下命令(如果你使用的Anaconda,直接进入Anaconda Prompt键入命令即可.如果你不知道Anaconda是什么,可以参考王树义老师的文 ...

  5. 【小工具系列】Python + OpenCV 图片序列转换成视频

    图片序列转换成视频 最近一直在找一个工具,能够将一堆图片转化成视频.网上找了一些小软件,还有 win10 的照片自带的视频制作功能,都不是很满意. 又不想下载那些专业的视频剪辑软件大材小用. 然后找到 ...

  6. 基于OpenCV实现对图片及视频中感兴趣区域颜色识别

    基于OpenCV实现图片及视频中选定区域颜色识别 近期,需要实现检测摄像头中指定坐标区域内的主体颜色,通过查阅大量相关的内容,最终实现代码及效果如下,具体的实现步骤在代码中都详细注释,代码还可以进一步 ...

  7. 利用FFmpeg生成视频的缩略视频 v8.3

    目前生成视频缩略图的工具大多数是生成静态的图片,为了解决这样的局限性,这 次春节期间搞了个利用 FFMpeg 能生成缩略动态视频的批处理. 把 Make_NxM_videos.bat LED_font ...

  8. [zt]OpenCV如何获取视频当前的一帧图像

    (OpenCV读取视频.OpenCV提取视频每一帧.每一帧图片合成新的AVI视频)CvCapture 是视频获取结构 被用来作为视频获取函数的一个参数 比如 CvCapture* cap; IplIm ...

  9. 利用FFmpeg生成视频缩略图 2.3.1

    1.下载FFmpeg文件包,解压包里的\bin\下的文件解压到 D:\ffmpeg\ 目录下. 下载地址 http://ffmpeg.zeranoe.com/builds/win32/static/ ...

  10. 利用FFmpeg生成视频缩略图 2.1.8

    1.下载FFmpeg文件包,解压包里的\bin\下的文件解压到 D:\ffmpeg\ 目录下. 下载地址 http://ffmpeg.zeranoe.com/builds/win32/static/ ...

随机推荐

  1. 翻译 GITHUB上HOW TO BE A GOOD PROGRAMMER

    转载请注明出处: http://www.cnblogs.com/hellocwh/p/5184072.html 更多内容点击查看 https://ahangchen.gitbooks.io/windy ...

  2. “Options模式”下的配置是如何绑定为Options对象

    “Options模式”下的配置是如何绑定为Options对象 配置的原子结构就是单纯的键值对,并且键和值都是字符串,但是在真正的项目开发中我们一般不会单纯地以键值对的形式来使用配置.值得推荐的做法就是 ...

  3. 再来一个学历重要性讨论——QQ技术群聊

    ----------------------------------------------------------------------- 正方:学历重要 大专,刚毕业那会太坑爹了.太受学历限制. ...

  4. Silverlight Socket 实现收发信息

    原文 http://www.cnblogs.com/ZetaChow/archive/2009/05/16/2237347.html 刚接触Silverlight的时候,除了其异步应用WCF.流媒体. ...

  5. js笔记-DOM基础

    DoM 浏览器支持: IE: 10% FF: 99% Chrome: 60% childNotes不兼容 在Chrome和IE9中会将文本节点也算作childNotes,而在IE6-8中childNo ...

  6. Rabbit and Grass(杭电1849)(尼姆博弈)

    Rabbit and Grass Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  7. POJ 2342 树形DP入门题

    有一个大学的庆典晚会,想邀请一些在大学任职的人来參加,每一个人有自己的搞笑值,可是如今遇到一个问题就是假设两个人之间有直接的上下级关系,那么他们中仅仅能有一个来參加,求请来一部分人之后,搞笑值的最大是 ...

  8. python 整数和浮点数

    整数和浮点数 Python支持对整数和浮点数直接进行四则混合运算,运算规则和数学上的四则运算规则完全一致. 基本的运算: 1 + 2 + 3 # ==> 6 4 * 5 - 6 # ==> ...

  9. 权威指南之脚本化http

    使用javascript代码操作http是可行的.当用脚本设置window对象的location属性或调用表单对象的submit方法时,都会初始化http请求.这两种情况下,浏览器会加载新页面. aj ...

  10. Dearmweaver CS6 如何添加emmet 插件

     一.关于emmet插件 已经接触前端工具的小伙伴们早听说过这个插件的鼎鼎大名了吧,emmet可以说是前端工程师的利器,就连老牌dreamweaver 都可以支持,我们怎么好意思拒绝这个好东西呢? 有 ...