opencv图片转幻灯片视频
/*g++ *.cpp `pkg-config --cflags --libs opencv` -std=c++11*/ #include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
#define NUM_FRAME 300
#define SIZE 7 char path[];//输入文件路径 //将图片序列转换为视频
void getVideo()
{
int i = ;
IplImage* img = ;//读入图像
IplImage* outimg = ;//修改图像尺寸
char image_name[];//图像名字
char videoname[];
strcpy(videoname, path);
strcat(videoname, "//1.avi"); //初始化视频编写器,参数根据实际视频文件修改
CvVideoWriter *writer = ;
//从文件读入视频
CvCapture* capture = cvCaptureFromAVI(videoname);
//读取和显示
int isColor = ;
IplImage* frameimg;//从视频中提取的帧图像
int fps = (int)cvGetCaptureProperty(capture, CV_CAP_PROP_FPS);//视频的fps
int frameH = (int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT);//视频的高度
int frameW = (int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH);//视频的宽度
writer = cvCreateVideoWriter("..//output//2.avi",-, fps, cvSize(frameW, frameH), isColor);//创建视频写入
printf("\tvideo height : %d\n\tvideo width : %d\n\tfps : %d\n", frameH, frameW, fps);
//创建窗口
cvNamedWindow("mainWin", CV_WINDOW_AUTOSIZE);
//读入图片,并制作幻灯片
while (i<SIZE)
{
CvSize Out_Img_size;//图片的大小
Out_Img_size.width = frameW;//使读入图片的大小与视频尺寸相同
Out_Img_size.height = frameH;
sprintf(image_name, "%d%s", ++i, ".jpg");//得到图片名字
char imgname[];
strcpy(imgname, path);
strcat(imgname, "//");
strcat(imgname,image_name);//加上路径
img = cvLoadImage(imgname);//打开图片
outimg = cvCreateImage(Out_Img_size, img->depth, img->nChannels);//创建一张与视频帧大小相同的图像
cvResize(img, outimg, CV_INTER_LINEAR);//让打开的图像重写为指定大小
if (!img)
{
printf("Could not load image file...\n");
exit();
}
//设置字体
CvFont font;
cvInitFont(&font, CV_FONT_VECTOR0, 0.5f, 0.5f, , , );
//在图像中显示文本字符串
cvPutText(outimg, "StudentID", cvPoint(frameW - , frameH - ), &font, CV_RGB(, , ));
cvPutText(outimg, "name", cvPoint(frameW - , frameH - ), &font, CV_RGB(, , ));
char key = cvWaitKey();//等待
//将图像写入视频,重复25次是为了使之放映速度变慢
for (int j = ; j < ; j++) {
cvShowImage("mainWin", outimg);
cvWriteFrame(writer, outimg);
}
}
i = ;
while ()
{
frameimg = cvQueryFrame(capture); //获取一帧图片
if (!frameimg)break;//读到尽头,退出
//设置字体
CvFont font;
cvInitFont(&font, CV_FONT_VECTOR0, 0.5f,0.5f , , , );
//在图像中显示文本字符串
cvPutText(frameimg, "StudentID", cvPoint(frameW - , frameH - ), &font, CV_RGB(, , ));
cvPutText(frameimg, "name", cvPoint(frameW - , frameH - ), &font, CV_RGB(, , ));
cvShowImage("mainWin", frameimg);
char key = cvWaitKey();
//将视频帧写入视频
cvWriteFrame(writer, frameimg);
}
cvReleaseVideoWriter(&writer);
cvDestroyWindow("mainWin");
} int main(int argc, char** argv)
{
strcpy(path, argv[]);
getVideo();
waitKey();
system("pause");
return ;
}
opencv图片转幻灯片视频的更多相关文章
- Python OpenCV图片转视频 工具贴(三)
Python OpenCV图片转视频 粘贴即用,注意使用时最好把自己的文件按照数字顺序命名.按照引导输入操作. # 一键傻瓜式引导图片串成视频 # 注意使用前最好把文件命名为数字顺序格式 import ...
- 【小工具系列】Python + OpenCV 图片序列转换成视频
图片序列转换成视频 最近一直在找一个工具,能够将一堆图片转化成视频.网上找了一些小软件,还有 win10 的照片自带的视频制作功能,都不是很满意. 又不想下载那些专业的视频剪辑软件大材小用. 然后找到 ...
- opencv3.2.0实现连续图片合成avi视频
##名称:利用videowriter实现多张连续图片合成avi视频 ##平台:QT5.7.1+OpenCV3.2.0 ##日期:2017年12月10日 /**************新建QT控制台程序 ...
- Matlab从一系列图片导出AVI视频,导出GIF动图
平台:Win7,Matlab 2014a 从一系列图片导出AVI视频的M代码如下: clear all; % 清除变量 % 官方示例,命令窗口输入“doc VideoWriter” writerObj ...
- javascript - 图片的幻灯片效果
javascript 代码: <script type="text/javascript"> function select_play() { var select_p ...
- Kafka+OpenCV 实现实时流视频处理
1. 启动Kafka Server bin/kafka-server-start.sh config/server.properties & 2. 创建一个新topic bin/kafka- ...
- 基于opencv图片切割
基于opencv图片切割为n个3*3区块 工作原因,切割图片,任务急,暂留调通的源码,留以后用. package com.rosetta.image.test; import org.opencv.c ...
- 没有内涵段子可以刷了,利用Python爬取段友之家贴吧图片和小视频(含源码)
由于最新的视频整顿风波,内涵段子APP被迫关闭,广大段友无家可归,但是最近发现了一个"段友"的app,版本更新也挺快,正在号召广大段友回家,如下图,有兴趣的可以下载看看(ps:我不 ...
- Opencv图片明暗处理
Opencv图片明暗处理 #include <iostream> #include <opencv2/opencv.hpp> using namespace std; usin ...
随机推荐
- ubuntu 相关软件设置
软件篇 1. 网易云音乐软件 首先去官网下载网易云音乐客户端linux版,网址:http://music.163.com/#/download,选择linux版本,然后选择ubuntu 16.04(6 ...
- UITabBarController的使用
UITabBarController的使用 前言: 苹果开发的小伙伴都知道,项目中只要用到了UITabBarController,UITabBarController就是APP的骨架.所以熟练掌握UI ...
- PHP性能分析工具xdebug+qcachegrind
先安装xdebug工具 pecl install xdebug 修改php.ini配置 [xdebug] zend_extension="xdebug.so" # profiler ...
- dmesg命令详解
基础命令学习目录 http://linux.cn/article-3587-1.html dmesg 命令的使用范例 下面我们展示一些最负盛名的‘dmesg’命令工具以及其实际使用举例.‘dmesg’ ...
- [译文]c#扩展方法(Extension Method In C#)
原文链接: https://www.codeproject.com/Tips/709310/Extension-Method-In-Csharp 介绍 扩展方法是C# 3.0引入的新特性.扩展方法使你 ...
- python2.7 倒计时
From: http://www.vitostack.com/2016/06/05/python-clock/#more Python公告 Python 发布了一个网站 http://pythoncl ...
- [ c++] cmake 编译时 undefined reference to `std::cout' 错误的解决方案
cmake .. 和 make 之后,出现如下错误 Linking CXX executable ../../../bin/ModuleTest CMakeFiles/ModuleTest.dir/ ...
- Git基础级介绍
这篇随笔是在学习了廖雪峰老师的git教程之后写的总结,要看详细的基础级git介绍可以去http://www.liaoxuefeng.com/wiki/0013739516305929606dd1836 ...
- BugPhobia准备篇章:Beta阶段前后端接口文档
0x00:序言 Two strangers fell in love, Only one knows it wasn’t by chance. To the searching tags, you m ...
- 安装AndroidJDK的坑
最近公司要用weex了,先开始搭一下环境,真的都是坑,写下来大家引以为鉴,我踩坑三天的后果. 首先要安装JavaJDK这个过程就不写了都是程序员网上搜索一下很多,注意找论坛上最新的帖子来看,这里有一个 ...