【问题标题】:Matlab - Closing vision.VideoPlayer handlerMatlab - 关闭 vision.VideoPlayer 处理程序
【发布时间】:2013-10-16 14:47:51
【问题描述】:

首先,请原谅我的英语不好。我在里面工作。

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

  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

有什么想法吗?

【问题讨论】:

    标签: computer-vision matlab matlab-cvst


    【解决方案1】:

    打开“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.
    

    【讨论】:

    • 这正是我想要的。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-24
    • 2012-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-18
    • 2012-01-13
    相关资源
    最近更新 更多