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 に答える