我现在有一个捕获avi文件的gui。它的工作原理如下:
控制器中的图像是相机的预览。当我按下“开始记录”按钮时,程序将使用getsnapshot()函数和writeVideo()函数捕获图像,以将图像写入视频文件。
在getsnapshot()函数之后,我获得了时钟函数的时间信息。 (我发现当使用[frame,metadata] = getsnapshot(obj)时,元数据是空的。我不知道为什么)。
我想询问是否可以将时间信息实时保存到视频文件(例如avi文件)中。我不知道怎么做。有人有想法吗?
答案 0 :(得分:0)
我不知道如何将自定义标题字段添加到AVI文件以存储您的其他时间信息。但是,可以在图像框的底部添加一个额外的行,其中包含该帧的编码时间戳信息。这取决于frame
数据的格式,但这里举例说明:
我们说frame
是您的典型RGB (Truecolor) image,有三个颜色平面和uint8
数据值,例如内置示例图像'peppers.png'
:< / p>
img = imread('peppers.png');
clock
函数将当前数据和时间作为日期向量返回,这是一个六元素double-precision向量。这需要48个字节的存储空间。我们可以使用typecast
函数将1乘6 double
向量转换为1乘48 uint8
向量,然后将其添加到红色的附加行的开头图像平面(自动用零填充行的其余部分和其他平面):
img(end+1, 1:48, 1) = typecast(clock, 'uint8');
底部的额外行非常不明显:
我们可以像这样重建时间戳和原始图像:
t = typecast(img(end, 1:48, 1), 'double');
img = img(1:(end-1), :, :);