es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo detener el bucle de mi cámara web en App Designer? Matlab

Estoy haciendo una interfaz en App Designer donde enciendo mi cámara web cuando presiono un botón (botón Empezar), el único problema es que no puedo encontrar una manera de detener mi cámara web, está en un bucle y necesito terminar ese bucle cuando presiono otro botón (botón de detener), pero he intentado muchas cosas y nada parece funcionar, intenté con buttonpressfcn pero no funcionó, abrir una figura y cuando se cierra la figura el vid se detiene tampoco funcionó, ¿alguna idea? Sé cómo detener el vid en GUIDE, pero tengo que usar App Designer y creo que no es lo mismo 🙁

propiedades (Acceso = público)
UIFigure matlab.ui.Figure
StopButton matlab.ui.control.Button
EmpezarButton matlab.ui.control.Button
UIAxes matlab.ui.control.UIAxes
end

% Callbacks que manejan los eventos de los componentes
métodos (Acceso = privado)

% Función pulsada por el botón: EmpezarButton
función EmpezarButtonPushed(app, event)

% claro todo;

    micamara= cámara web(1);
    micamara.Resolución = '640x360';
    micamara.Brillo = 10;
    % ventana = app.StopButton.ButtonPushedFcn;
    % mientras ishandle (ventana)
    ventana = figura;
    while ishandle(ventana)
       img = snapshot(micamara);
       imshow(img, 'Parent', app.UIAxes);


    fin

fin

% Función pulsada por el botón: StopButton
función StopButtonPushed(app, event)
    ventana global;
     ventana = 1;
fin

final

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Una posible solución a este problema es introducir una variable que controle el bucle y pueda ser modificada por el callback StopButtonPushed.

    Primero, declare una propiedad en la definición de clase para la variable de control de bucle:

    properties (Access = private)
        cam_loop_control logical = true;
    end
    

    En el callback EmpezarButtonPushed, reemplace la condición del bucle while con esta variable:

    while app.cam_loop_control
    

    Luego, modifique el callback StopButtonPushed para establecer la variable de control de bucle en falso:

    function StopButtonPushed(app, event)
        app.cam_loop_control = false;
    end
    

    Esto debería permitir que el bucle sea terminado cuando se presione el botón Stop.

Comments are closed.