OpenCV---图片生成视频
/**
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---图片生成视频的更多相关文章
- 基础学习笔记之opencv(6):实现将图片生成视频
基础学习笔记之opencv(6):实现将图片生成视频 在做实验的过程中.难免会读视频中的图片用来处理,相反将处理好的图片又整理输出为一个视频文件也是非经常常使用的. 以下就来讲讲基于opencv的C+ ...
- Python OpenCV图片转视频 工具贴(三)
Python OpenCV图片转视频 粘贴即用,注意使用时最好把自己的文件按照数字顺序命名.按照引导输入操作. # 一键傻瓜式引导图片串成视频 # 注意使用前最好把文件命名为数字顺序格式 import ...
- opencv图片压缩视频并读取
import os import cv2 import numpy as np import time path = './new_image/' filelist = os.listdir(path ...
- Python+Opencv实现把图片转为视频
1. 安装Opencv包 在Python命令行输入如下命令(如果你使用的Anaconda,直接进入Anaconda Prompt键入命令即可.如果你不知道Anaconda是什么,可以参考王树义老师的文 ...
- 【小工具系列】Python + OpenCV 图片序列转换成视频
图片序列转换成视频 最近一直在找一个工具,能够将一堆图片转化成视频.网上找了一些小软件,还有 win10 的照片自带的视频制作功能,都不是很满意. 又不想下载那些专业的视频剪辑软件大材小用. 然后找到 ...
- 基于OpenCV实现对图片及视频中感兴趣区域颜色识别
基于OpenCV实现图片及视频中选定区域颜色识别 近期,需要实现检测摄像头中指定坐标区域内的主体颜色,通过查阅大量相关的内容,最终实现代码及效果如下,具体的实现步骤在代码中都详细注释,代码还可以进一步 ...
- 利用FFmpeg生成视频的缩略视频 v8.3
目前生成视频缩略图的工具大多数是生成静态的图片,为了解决这样的局限性,这 次春节期间搞了个利用 FFMpeg 能生成缩略动态视频的批处理. 把 Make_NxM_videos.bat LED_font ...
- [zt]OpenCV如何获取视频当前的一帧图像
(OpenCV读取视频.OpenCV提取视频每一帧.每一帧图片合成新的AVI视频)CvCapture 是视频获取结构 被用来作为视频获取函数的一个参数 比如 CvCapture* cap; IplIm ...
- 利用FFmpeg生成视频缩略图 2.3.1
1.下载FFmpeg文件包,解压包里的\bin\下的文件解压到 D:\ffmpeg\ 目录下. 下载地址 http://ffmpeg.zeranoe.com/builds/win32/static/ ...
- 利用FFmpeg生成视频缩略图 2.1.8
1.下载FFmpeg文件包,解压包里的\bin\下的文件解压到 D:\ffmpeg\ 目录下. 下载地址 http://ffmpeg.zeranoe.com/builds/win32/static/ ...
随机推荐
- zookeeper 学习笔记 (C语言版本)
1.zookeeper简介 zookeeper是Hadoop的子项目,在大型分布式系统中,zookeeper封装好了一些复杂易出错的服务,提供简单易用的接口,给使用者提供高效稳定的服务.这些服务包括配 ...
- Task和backStack(本篇章核心)
对Task和backStack的认识过程 1.由demo测试得到的关系图: 1.一个task中可以有多个app的Activity, 由于一个app可以对应一个或多个process, 2.所以一个ta ...
- 关于android 1.6全部的权限介绍
原文:关于android 1.6全部的权限介绍 我们在 AndroidManifest.xml里需要对一些软件需要的操作做一些权限的声明,比如我们的软件有发送短信的功能,那么就需要在 AndroidM ...
- SDN 编程语言 p4(SDN programming language P4)
行业趋势,SND是未来. P4 是未来. SDN is inevitably, and P4 is inevitably. P4 = Programming Protocol-Independent ...
- 《UML和模式应用》重点之思想篇
本书是帮助开发人员和学生学习面向对象分析和设计(OOA/D)的核心技能的重要工具. UML不是OOA/D.也不是方法,仅仅是图形表示法,假设没有真正掌握怎样创建优秀的面向对象设计,或者怎样评估和改进现 ...
- Android 启动Activity的方式
Activity的启动分为两种方式,显示方式和隐式方式,显示方式就是在通过intent启动Activity时指定了Activity的包名和类名. 而隐式方式则在初始化Intent时仅仅指定action ...
- BigDecimal类的简单使用方法
一提到Java里面的商业计算,我们都知道不能用float和double,由于他们无法进行精确计算.可是Java的设计者给编程人员提供了一个非常实用的类BigDecimal,他能够完好float和dou ...
- 读写分离提高 SQL Server 并发性
转自:http://www.canway.net/Lists/CanwayOriginalArticels/DispForm.aspx?ID=476 在一些大型的网站或者应用中,单台的SQL Serv ...
- 虚拟键盘,移动web开发的痛
原生APP的弹出虚拟键盘和收回虚拟键盘,输入框始终贴在虚拟键盘的上方.如下图: 如果移动端web也想做类似的功能,可以实现吗? 你可能会说着:“不就是放一个position: fixed;的输入框在 ...
- jQuery插件开发方法
jQuery如此流行,各式各样的jQuery插件也是满天飞.你有没有想过把自己的一些常用的JS功能也写成jQuery插件呢?如果你的答案是肯定的,那么来吧!和我一起学写jQuery插件吧! 很多公司的 ...