首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建矩阵的向量来存储大量的图像?

如何创建矩阵的向量来存储大量的图像?
EN

Stack Overflow用户
提问于 2017-01-17 05:10:21
回答 2查看 40关注 0票数 0

我想创建矩阵的向量来存储尽可能多的图像。

我知道,这是可能的,如下所示:

代码语言:javascript
复制
vector<Mat> images1;

在从摄像头获取图像的过程中,我将以100fps的分辨率将图像保存为1600*800,如下所示:

代码语言:javascript
复制
images1.push_back(InputImage.clone());

其中InputImage是由相机提供的垫子。因为在采集过程期间创建视频或者导致视频中的帧丢失或者降低采集速度。

在停止图像采集之后,在停止程序之前,我会将图像写入到视频中,如下所示:

代码语言:javascript
复制
VideoWriter writer;
writer = Videowriter("video.avi",-1,100,frameSize(1600,800),false);
for (vector<Mat>::iterator iter = images1.begin(); ier != images1.end(); iter++)
writer.write(*iter);

这是正确的,因为我不确定images1是否可以存储大约1500张图像而不会溢出。

EN

回答 2

Stack Overflow用户

发布于 2017-01-17 05:37:20

你真的不必担心“溢出”,无论它在你的上下文中意味着什么。

更大的问题是内存。单个帧采用(每种颜色8位,具有3种颜色) 3 * 1600 * 800 == 3.84Mb。在100fps时,1秒的素材需要0.384 of的内存。8 8GB的内存只能容纳大约20秒的素材。你需要将近24 of的内存才能容纳一整分钟。有一个原因,浩瀚,浩瀚,绝大多数视频编码软件在任何给定的时间只在内存中保留几帧视频数据,并将其余的转储到硬盘驱动器(或丢弃它,取决于软件的服务目的)。

你可能应该做的(这就是像FRAPS这样的程序所做的)是一旦你收到帧就把它们转储到硬盘驱动器上。然后,当录制完成时,您可以结束这一天(如果您需要原始视频片段),或者您可以开始读取文件并将其编码为更压缩格式的过程。

票数 0
EN

Stack Overflow用户

发布于 2017-01-17 06:36:11

在内存中预先分配图像向量,这样您只需要复制帧,而不需要实时分配。

如果你有内存问题,尝试将帧转储到一个文件,操作系统将有望能够处理I/O。如果没有,请尝试内存映射文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41685031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档