0

我试图弄清楚如何运行相机并按下按钮停止相机。如果我不能这样做,我如何设置相机在这个数字内运行,我会让它一直运行。我还需要捕捉图像。

function faceCam2()
vid = videoinput('winvideo');

% Create a figure window
hFig = figure('Toolbar','none',...
       'Menubar', 'none',...
       'NumberTitle','Off',...
       'Name','FaceScan');

%start camera
uicontrol(  'String', 'Start Preview',...
            'Callback', 'preview(vid)',...
            'Units','normalized',...
            'Position',[0 0 0.15 .07]);     
%stop
uicontrol(  'String', 'Stop Preview',...
            'Callback', 'stoppreview(vid)',...
            'Units','normalized',...
            'Position',[.17 0 .15 .07]);
%snapshot
uicontrol(  'String', 'Pic',...
            'Callback', 'data = getsnapshot(vid)',...
            'Units','normalized',...
            'Position',[0.34 0 .15 .07]);
%close window
uicontrol(  'String', 'Close',...
            'Callback', 'close(gcf)',...
            'Units','normalized',...
            'Position',[0.51 0 .15 .07]);

end

当我按下一个按钮时,我在 matlab 命令窗口中得到错误。退出工作,但不是其他 3. 我需要做什么?谢谢!

未定义的函数或变量“vid”。

评估 uicontrol 回调时出错

4

1 回答 1

0

问题是它vid是函数中的局部变量,faceCam2对回调不可见。以下是一些将数据传递给回调函数的方法。使用嵌套方法时,代码如下所示:

function faceCam2()
vid = videoinput('winvideo');

% Create a figure window
hFig = figure('Toolbar','none',...
       'Menubar', 'none',...
       'NumberTitle','Off',...
       'Name','FaceScan');

%start camera
uicontrol(  'String', 'Start Preview',...
            'Callback', @prevCallback,...
            'Units','normalized',...
            'Position',[0 0 0.15 .07]);     

    function prevCallback(hObject,eventdata)
       preview(vid);
    end
%...
end 
于 2013-03-29T08:03:19.697 回答