首页 > 解决方案 > MATLAB:图像快照数组

问题描述

调用单元阵列来存储来自 Logitech USB 摄像头的快照:

obj=videoinput('winvideo',1)
disp(obj.name)
MJPG_1024x576-winvideo-1

执行需要 33 秒。

tic
nframes=25;
frame=cell(nframes);
for i=1:nframes
    frame{i} = getsnapshot(obj);
end
toc

getsnapshot() 返回的帧(图像)是 576X1024X3 uint8(RGB?)。

单元数组MATLAB 类是否有更好的或替代方法来存储快照数组?一个具体的代码示例总是受欢迎的?

标签: matlab

解决方案


普通多维数组通常比元胞数组快:

tic
nframes=25;
frame=zeros(576,1024,3,nframes,'uint8');
for i=1:nframes
    frame(:,:,:,i) = getsnapshot(obj);
end
toc

之后,访问单个帧与分配相同:frame(:,:,:,frame_num)为您提供 572x1024x3 数组。只有基准测试才能判断这种方法是否真的更快。


推荐阅读