OpenCV学习 - 图片集合成视频
这个很简单,没什么好说的。。。这里给出学习手册:
1.官方教程:https://docs.opencv.org
2.这个是一些video相关的API参考:https://docs.opencv.org/trunk/dd/d9e/classcv_1_1VideoWriter.html
3.一个简单的例子实现将图片集合成视频:https://docs.opencv.org/trunk/d5/d57/videowriter_basic_8cpp-example.html#a5
谈一下一些小细节,其实官方文档中有提示,注意仔细看应该没问题:
1.注意图像尺寸,要合成的每一张图片规格必须一致。
2.注意图像RGB值,如果是jpg/png这样的,则默认打开3个通道(RGB),imread()中有一个省缺参数isColor默认为true,如果图片是灰度图像,应将isColor设置为false。参考:https://blog.csdn.net/yang_xian521/article/details/7440190(看评论)、https://docs.opencv.org/master/d5/d98/tutorial_mat_operations.html
3.fps(Frames per Second)表示帧率,单位Hz,即每秒播放的帧数,一般25~30的帧率在视频看起来会很流畅,在游戏中60~75fps就非常流畅了,太高了并不好,显示屏刷新频率会跟不上而浪费GPU的处理能力,太低了游戏体验会很糟糕...
4.opencv貌似只支持avi格式的视频。
———— ps:简单的封装了一下VideoWriter ————
头文件:img2video.hpp:
#ifndef _IMG_TO_VIDEO_H_
#define _IMG_TO_VIDEO_H_ #include "opencv2/imgcodecs.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/videoio.hpp"
#include <stdio.h>
#include <string.h> #ifndef __cplusplus
extern "C" {
#endif #ifndef __cplusplus
}
#endif // __cplusplus using namespace cv; #define BUF_SIZE (32 << 1) int ImageOverlay(char*src,
const char*format, const char*dst,
int width, int height,
size_t start_name, size_t end_name,
int fps, int isColor)
{
char img_name[BUF_SIZE];
char psrc[BUF_SIZE];
strcpy(psrc, src);
Mat r; VideoWriter writer(dst, VideoWriter::fourcc('M', 'J', 'P', 'G'), fps,
Size(width, height), isColor);
if (!writer.isOpened()) { printf("Error at line %d :function VideoWriter\n", __LINE__); return -1; }
for (size_t i = start_name; i <= end_name; i++)
{
#ifdef _WIN64
if (sprintf(img_name, "/%I64d.", i) < 0)
#else
if (sprintf(img_name, "/%lld.", i) < 0)
#endif
{
printf("Error at line %d :function sprintf()\n", __LINE__);
return -3;
} strcat(img_name, format);
strcat(src, img_name);
printf("%s\n", src);
r = imread(src);
strcpy(src, psrc);
if(r.empty()) { printf("Error at line %d :function imread()\n", __LINE__); return -4; }
waitKey(5);
writer.write(r);
}
printf("加载完成!\n");
return 0;
} #endif // _IMG_TO_VIDEO_H_
测试:
#include "img2video.hpp"
#include <iostream> int main()
{
char src[] = "/home/darkchii/图片";
char format[] = "png"; ImageOverlay(src, format, "/home/darkchii/视频/sg0.avi", 1920, 1080, 2, 6, 6, 1);
return 0;
}
OpenCV学习 - 图片集合成视频的更多相关文章
- opencv学习笔记(七)SVM+HOG
opencv学习笔记(七)SVM+HOG 一.简介 方向梯度直方图(Histogram of Oriented Gradient,HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子 ...
- opencv学习笔记(六)直方图比较图片相似度
opencv学习笔记(六)直方图比较图片相似度 opencv提供了API来比较图片的相似程度,使我们很简单的就能对2个图片进行比较,这就是直方图的比较,直方图英文是histogram, 原理就是就是将 ...
- opencv学习笔记(五)镜像对称
opencv学习笔记(五)镜像对称 设图像的宽度为width,长度为height.(x,y)为变换后的坐标,(x0,y0)为原图像的坐标. 水平镜像变换: 代码实现: #include <ios ...
- opencv学习笔记(四)投影
opencv学习笔记(四)投影 任选了一张图片用于测试,图片如下所示: #include <cv.h> #include <highgui.h> using namespace ...
- opencv学习笔记(三)基本数据类型
opencv学习笔记(三)基本数据类型 类:DataType 将C++数据类型转换为对应的opencv数据类型 OpenCV原始数据类型的特征模版.OpenCV的原始数据类型包括unsigned ch ...
- opencv学习笔记(二)寻找轮廓
opencv学习笔记(二)寻找轮廓 opencv中使用findContours函数来查找轮廓,这个函数的原型为: void findContours(InputOutputArray image, O ...
- opencv学习笔记(一)IplImage, CvMat, Mat 的关系
opencv学习笔记(一)IplImage, CvMat, Mat 的关系 opencv中常见的与图像操作有关的数据容器有Mat,cvMat和IplImage,这三种类型都可以代表和显示图像,但是,M ...
- paper 93:OpenCV学习笔记大集锦
整理了我所了解的有关OpenCV的学习笔记.原理分析.使用例程等相关的博文.排序不分先后,随机整理的.如果有好的资源,也欢迎介绍和分享. 1:OpenCV学习笔记 作者:CSDN数量:55篇博文网址: ...
- (转) OpenCV学习笔记大集锦 与 图像视觉博客资源2之MIT斯坦福CMU
首页 视界智尚 算法技术 每日技术 来打我呀 注册 OpenCV学习笔记大集锦 整理了我所了解的有关OpenCV的学习笔记.原理分析.使用例程等相关的博文.排序不分先后,随机整理的 ...
随机推荐
- pyodbc-的一些说明
cursor的description 可以获得一些关于表的信息 info=cursor.description 此时表中有多少列就有多少个元素,一个元素就是一列的信息(格式是tuple),所以这里的i ...
- Linux服务器上实现数据库和图片文件的定时备份
一. 1.首先创建一个目录,用于存放备份的数据 2.在该目录下创建两个子目录一个用于存放数据库的信息,一个用于存放图片资源 3.#数据库的备份 执行下面的命令 mysqldump ...
- servlet常用对象
Cookie对象 浏览器缓存技术,只存储在浏览器中 cookie的大小在4kb左右,每个浏览器在同一域名下能存放cookie数量是有限的 优缺点:提高网页的效率,减轻服务器的负载;安全性较差. 1 创 ...
- 安装ipython[win/linux]
首先以win7 64位系统, python2.7.9为例,linux见底部 1.下载材料http://files.cnblogs.com/files/smileyes/ipython-win64.z ...
- 虚拟机安装的ubuntu不能联网解决
安装双系统从没遇到的问题,再虚拟机上遇到了不能联网的问题: 下面给出我的解决方法(win10系统.ubuntu 16.04) 我的电脑-管理-设备管理器 看是否虚拟机的虚拟网卡在: 在去设置-控制面板 ...
- Panda的学习之路(1)——series 和 Dataframe
一.Series panda最基本的对象 # pandas的基础s=pd.Series([1,3,6,np.nan,44,1])#建立个简单的基本对象 类似一个一位数组print("建立个简 ...
- 自己常用的Linux命令和Hadoop命令
记录自己常用的Linux命令: ss的启动命令:ssserver -c /etc/shadowsocks.json jupyter notebook的启动命令:jupyter notebook --a ...
- PHP基础学习笔记3
一.检索表单信息 PHP 中的 $_GET 和 $_POST 变量用于检索表单中的信息,比如用户输入 提交的表单: <form action="welcome.php" me ...
- 基于jenkins自动打包并部署docker环境及PHP环境
- 各种颜色空间之间的转换算法(XYZ → Standard-RGB ,Standard-RGB → XYZ)
http://www.easyrgb.com/en/convert.php#Result http://www.easyrgb.com/en/math.php