Matlab - 关闭vision.VideoPlayer处理程序

时间:2013-10-16 14:47:52

标签: computer-vision matlab matlab-cvst

首先,因为我的英语不好而烦恼。我正在努力。

我正在从事计算机视觉应用。我正在使用网络摄像头。主循环是这样的:

  while true
     get frame
     process frame
     show frame in figure
  end while

我想要这样的事情:

 while figure is open
     get frame
     process frame
     show frame in figure
  end while

我曾经使用figure和imshow绘制框架,我使用处理程序知道用户何时关闭了图形。

fig = figure;
set(fig,'KeyPressFcn','exit = true;');
set(fig,'CloseRequestFcn', 'exit = true; delete(gcf)');

但是现在我正在使用来自计算机系统工具箱的vision.VideoPlayer,因为速度更快,我找不到办法做类似的事情。我不想使用GUI。

代码就是这个(来自这个other thread):

vid = videoinput('winvideo', 1, 'RGB24_320x240'); %select input device

hvpc = vision.VideoPlayer;   %create video player object

src = getselectedsource(vid);
vid.FramesPerTrigger =1;
vid.TriggerRepeat = Inf;
vid.ReturnedColorspace = 'rgb';
src.FrameRate = '30';
start(vid)

%start main loop for image acquisition
for t=1:500
  imgO=getdata(vid,1,'uint8');    %get image from camera
  hvpc.step(imgO);    %see current image in player
end

有些想法?

1 个答案:

答案 0 :(得分:5)

您可以通过启用“ShowHiddenHandles”找到vision.VideoPlayer对象的图形句柄。

set(0, 'ShowHiddenHandles', 'on') % Revert this back to off after you get the handle

这个gcf之后可以给你提供句柄。但是改变隐藏句柄的回调是有风险的。他们可能已经为VideoPlayer对象的正常运行设置了许多回调。您可能需要检查其有效性和可见性,以检测它是否已打开。

h = gcf;
...
ishandle(h)
get(h, 'Visible') % will return 'off' if the figure is not visible.