如何使用Matlab实时保存带有时间戳的avi?

时间:2017-07-24 20:50:05

标签: matlab video timestamp

我现在有一个捕获avi文件的gui。它的工作原理如下:

controller

控制器中的图像是相机的预览。当我按下“开始记录”按钮时,程序将使用getsnapshot()函数和writeVideo()函数捕获图像,以将图像写入视频文件。

在getsnapshot()函数之后,我获得了时钟函数的时间信息。 (我发现当使用[frame,metadata] = getsnapshot(obj)时,元数据是空的。我不知道为什么)。

我想询问是否可以将时间信息实时保存到视频文件(例如avi文件)中。我不知道怎么做。有人有想法吗?

1 个答案:

答案 0 :(得分:0)

我不知道如何将自定义标题字段添加到AVI文件以存储您的其他时间信息。但是,可以在图像框的底部添加一个额外的行,其中包含该帧的编码时间戳信息。这取决于frame数据的格式,但这里举例说明:

我们说frame是您的典型RGB (Truecolor) image,有三个颜色平面和uint8数据值,例如内置示例图像'peppers.png':< / p>

img = imread('peppers.png');

enter image description here

clock函数将当前数据和时间作为日期向量返回,这是一个六元素double-precision向量。这需要48个字节的存储空间。我们可以使用typecast函数将1乘6 double向量转换为1乘48 uint8向量,然后将其添加到红色的附加行的开头图像平面(自动用零填充行的其余部分和其他平面):

img(end+1, 1:48, 1) = typecast(clock, 'uint8');

底部的额外行非常不明显:

enter image description here

我们可以像这样重建时间戳和原始图像:

t = typecast(img(end, 1:48, 1), 'double');
img = img(1:(end-1), :, :);