matlab如何显示快照?

Matlab how to display snapshots?

vido = videoinput('winvideo',1);
vido.FrameGrabInterval = 10;
 start(vido)
while(vido.FramesAcquired<=30)
data = getsnapshot(vido);
 imshow(data);

flushdata(vido);
end

Hi.I 代码 above.It 正在运行,但每个 snapshot.For 示例都是从内存中生成的 600mb,610,620...为什么?我该如何防止这种情况?

您很可能不会在完成后删除视频对象。每次 运行 此代码时,您都会继续创建视频对象,即使您从源中抓取 30 帧并在该点之后停止捕获。因此,请确保在 while 循环结束 delete 时删除视频对象。

此外,您已经指出 imshow 是您不断获得内存增加的原因。它实际上不应该,但如果你真的那么担心,你可以生成一个空白图形,然后获取 imshow window 的句柄。接下来,您可以简单地为您读入的每一帧更新 window... 所以:

hAxes = subplot(1,1,1); % //Create a blank window and get the axes handle

%// First frame flag
firstFrame = true;

vido = videoinput('winvideo',1);
vido.FrameGrabInterval = 10;
start(vido);
while(vido.FramesAcquired<=30)
   data = getsnapshot(vido);
   if firstFrame % //If first frame, show the image and get a handle to the window
      hImage = imshow(data, 'Parent', hAxes);
      firstFrame = false;
   else
      %// Simply update the window after the first frame
      set(hImage, 'CData', data);
   end
   flushdata(vido);
end

delete(vido); %// IMPORTANT