You are on page 1of 10

ESCUELA POLITÉCNICA NACIONAL C- 1/10

Comisión de Docencia y Bienestar Estudiantil

(Ing.) Andrés Utreras

ESCUELA POLITÉCNICA
NACIONAL

FACULTAD DE INGENIERÍA ELÉCTRICA Y


ELECTRÓNICA
Nombre(s) : Roberto Gabriel Sumba Caceres

Trabajo N°2

Roberto Gabriel Sumba Caceres

DIRECTOR: Ing. Andrés Utreras

Quito, Enero 2018


Enero,2018

nmjb
ESCUELA POLITÉCNICA NACIONAL C- 2/10
Comisión de Docencia y Bienestar Estudiantil

INDICE GENERAL

Índice general-------------------------------------------2

Capítulo 1

1..1 Programa VideoGuid----------------------------3

1.2 Programa Parallel Port-----------------------------7

Capítulo 2.

2.1 GUI con una función nueva (no esta en el manual)----8

Capitulo 3.

3..1 Resumen ------------------------------------10


ESCUELA POLITÉCNICA NACIONAL C- 3/10
Comisión de Docencia y Bienestar Estudiantil

Capítulo 1
1.1 Programa VideoGuide
Primero debemos saber la información de los adaptadores de adquisición de
imagen de nuestra CPU. ingresamos el siguiente comando en el coman
Windows en Matlab:

El comando daqhwinfo en las nuevas versiones de Matlab el comando se


restauro y desde entonces se utiliza el comando imaqhwinfo

>>dato=imaqhwinfo

Este comando nos dice todos los adaptadores instalados en nuestra laptop, en
este caso no tenemos instalado el adaptador video. Entonces introducimos el
siguiente código para poder instalarlo

>> supportPackageInstaller

No guiará a la siguiente ventana

Y en el buscador ponemos: os generic video interface . lo seleccionamos y lo


instalamos.
ESCUELA POLITÉCNICA NACIONAL C- 4/10
Comisión de Docencia y Bienestar Estudiantil

Aceptamos los términos de la licencia y esperamos a que se instalen . una


vez instalado volvemos a introducir el comando

>>dato=imaqhwinfo

Como vemos ya está instalado el adaptador video y proseguimos con la


información del adaptador para lo cual introducimos el siguiente código en el
comman Windows

Con esta información , vamos a poder realizar el Programa VideoGuide


ESCUELA POLITÉCNICA NACIONAL C- 5/10
Comisión de Docencia y Bienestar Estudiantil

Cambiamos el tag de los dos axes a video_cam y fotografía ,


respectivamente.Tambien los push bottom a capturar y guardar tal como se
muestra en la imagen

Él código en la sección de inicialización del siguiente;

function videoGUI_OpeningFcn(hObject, eventdata, handles, varargin)


handles.output = hObject;
% Update handles structure
handles.rgb = [];
handles.noback = [];
guidata(hObject, handles);
% This sets up the video camera and starts the preview
% Only do this when it's invisible
if strcmp(get(hObject,'Visible'),'off')
try
handles.vidobj = videoinput('winvideo');
% Update handles structure
start(handles.vidobj);
guidata(hObject, handles);
vidRes = get(handles.vidobj, 'VideoResolution');
nBands = get(handles.vidobj, 'NumberOfBands');
hImage = image(zeros(vidRes(2), vidRes(1), nBands), 'Parent',...
handles.video_cam);
preview(handles.vidobj,hImage);
catch
msgbox('NO HAY CÁMARA CONECTADA. Cargando Profile.jpg.')
hImage =
image(imread('profile.jpg'),'Parent',handles.video_cam);
ESCUELA POLITÉCNICA NACIONAL C- 6/10
Comisión de Docencia y Bienestar Estudiantil

end
end

STRCMP

La sentencia strcmp compara dos strings. Si son iguales retorna 1 y caso


contrario, retorna 0. tf = strcmp(s1,s2)compara s1 and s2 y returns 1( true) si
los dos son idénticos y 0 ( false) lo contrario. El texto se considera idéntico si el
tamaño y el contenido de cada uno son iguales. El resultado de la devolución tf
es de tipo de datos logical.
Los argumentos de entrada pueden ser cualquier combinación de matrices de
cadenas, vectores de caracteres y matrices de celdas de vectores de
caracteres.

TRY/CATCH

Puede usar una instrucción try / catch para ejecutar código después de que su
programa encuentre un error. las declaraciones try / catch pueden ser útiles si
usted:
Quiere terminar el programa de otra manera que evite errores
Necesidad de eliminar los efectos secundarios no deseados del error
Tiene muchos parámetros de entrada problemáticos o comandos

Organice las instrucciones try / catch en bloques de código, de forma similar a


este pseudocódigo:

try
try block...
catch
catch block...
end

En este programa la función:

El código entre try y catch establece la conexión de video e inicia la


reproducción. En caso de producirse un error en estas líneas, se ejecuta el
código entre catch y end, que coloca una imagen (‘profile.jpg’) en el axes de
captura de foto.

Para capturar la imagen, utilizamos el siguiente código:

function captura_Callback(hObject, eventdata, handles)


try
handles.rgb = getsnapshot(handles.vidobj);
catch
handles.rgb = imread('profile.jpg');
end
% Update handles structure
guidata(hObject, handles);
image(handles.rgb,'Parent',handles.fotografia);
ESCUELA POLITÉCNICA NACIONAL C- 7/10
Comisión de Docencia y Bienestar Estudiantil

axes(handles.fotografia)
axis off

GETSNAPSHOT
frame = getsnapshot(obj)devuelve inmediatamente un solo marco de
imagen,, framedesde el objeto de entrada de video obj. El marco de datos
devuelto es independiente de la FramesPerTriggerpropiedad del objeto de
entrada de video y no tiene ningún efecto sobre el valor de
la propiedad FramesAvailableo FramesAcquired. El objeto objdebe ser un
objeto de entrada de video de 1 por 1. frame se devuelve como una matriz H-
by-W-by-B donde

H Altura de la imagen, como se especifica en la ROIPositionpropiedad


W Ancho de imagen, como se especifica en la ROIPositionpropiedad
B Número de bandas asociadas con obj, tal como se especifica en la NumberOfBandspropieda

En este programa la función:

La función getsnapshot captura la imagen de la cámara de video. En caso de


que la cámara se haya desconectado, se carga la imagen profile.jpg. Obtenida
la imagen, finalmente se la asigna al axes etiquetado como fotografía con la
función image.

Para guardar la imagen. utilizamos el siguiente código:

function guardar_Callback(hObject, eventdata, handles)


rgb = getimage(handles.fotografia);
if isempty(rgb), return, end
%guardar como archivo
fileTypes = supportedImageTypes; % Función auxiliar.
[f,p] = uiputfile(fileTypes);
if f==0, return, end
fName = fullfile(p,f);
imwrite(rgb,fName);
msgbox(['Imagen guardada en ' fName]);
%Cambio al directorio donde se ha guardado la imagen (prescindible)
%if ~strcmp(p,pwd)
% cd(p);
%end
function fileTypes = supportedImageTypes
% Función auxiliar: formatos de imágenes.
fileTypes = {'*.jpg','JPEG (*.jpg)';'*.tif','TIFF (*.tif)';...
'*.bmp','Bitmap (*.bmp)';'*.*','All files (*.*)'};

1.2 Programa Parallel Port

Primero debemos saber la información de los adaptadores de adquisición de


puerto paralelo de nuestra CPU. ingresamos el siguiente comando en el coman
Windows en Matlab:
>> dato=imaqhwinfo;
ESCUELA POLITÉCNICA NACIONAL C- 8/10
Comisión de Docencia y Bienestar Estudiantil

>> dato.InstalledAdaptors

Como observamos el Adaptador Parallel no se encuentra instalado y al no


poder contar con el puerto paralelo se nos hace comlicado el desarrollo del
programa , ya que se basa en los pines del adaptador .

2.1 GUI con una función nueva (no esta en el manual)


ESCUELA POLITÉCNICA NACIONAL C- 9/10
Comisión de Docencia y Bienestar Estudiantil

Este guide nos permitir variar la grafica con forme ala frecuencia en tiempo real
consta un axes,toggel bottom , 3 edit y slider.

en el edit de la Frecuencia tenemos el siguiente código


% Rangos de tiempo
t1=str2num(get(handles.TiempoInicial,'string'));
t2=str2num(get(handles.TiempoFinal,'string'));
% Vector tiempo
t=linspace(t1,t2,200);
% Valor de la frecuencia
frec=str2num(get(handles.Frecuencia,'string'));
% Barra de desplazamiento
editamin=get(handles.Barra,'Min');
editamax=get(handles.Barra,'Max');
%Chequear si el valor de frecuencia es numerico
if isnumeric(frec)&lenght(frec)==1&frec>=editamin&frec<=editamax
set(handles.Barra,'Value',frec)
elseif frec<editamin
set(gcbo,'string',editamin);
set(handles.Barra,'Value',editamin);
frec=editamin;
elseif frec>editamax
set(gcbo,'string',editamax);
set(handles.Barra,'value',editamax);
frec=editamax
end
% graficar función seno
y=sin(2*pi*frec*t);
plot(t,y);

en el toggel botton cambiamos el tag a grids y introducimos el código:

function grids_Callback(hObject, eventdata, handles)


die=get(hObject,'Value');
handles.die=die;
if handles.die==1
grid on;
set(handles.grids,'String','GRID ON');
else
grid off;
set(handles.grids,'String','GRID OFF');
end

y por ultimo en la barra slider copiamos en siguiente código:

function Barra_Callback(hObject, eventdata, handles)


set(handles.Frecuencia,'string',get(gcbo,'value'));
% Rangos de tiempo
t1=str2num(get(handles.TiempoInicial,'string'));
t2=str2num(get(handles.TiempoFinal,'string'));
% Vector tiempo
t=linspace(t1,t2,200);
frec=get(gcbo,'value');
y=sin(2*pi*frec*t);
plot(t,y);
ESCUELA POLITÉCNICA NACIONAL C- 10/10
Comisión de Docencia y Bienestar Estudiantil

3..1 Resumen
Las GUI (también conocidas como interfaces gráficas de usuario o interfaces de
usuario) permiten un control sencillo (con uso de ratón) de las aplicaciones de software,
lo cual elimina la necesidad de aprender un lenguaje y escribir comandos a fin de
ejecutar una aplicación.

You might also like