Vous êtes sur la page 1sur 10

CLASE 2 INTERFAZ DE USUARIO CON QT CREATOR Y OPEN CV

Objetivos - Aprender los pasos necesarios para crear una interfaz simple en Qt creator y hacer procesamiento de imagen dentro de ella usando Open cv. - Modificar las caractersticas de una imagen usando Open Cv como herramienta. - Implementar en la interfaz de usuario la opcin y abrir y guardar imgenes en una ruta deseada.

INTERFAZ DE USUARIO CON QT CREATOR Y OPEN CV Este tutorial indica paso a paso como crear una interfaz desde cero usando Qt creator, el proyecto permitir cargar una imagen desde una ruta definida por el usuario y procesarla para finalmente mostrar en pantalla tanto la imagen original como su escala de grises.

-Para comenzar debemos crear un nuevo proyecto del tipo QWidget Proyect

-Creamos en la barra de men la seccin Archivo para ello damos clic en Design, damos clic en la parte de la ventana que dice Type Here y escribimos archivo

-Damos clic en la seccin de archivo ya creada y en el men que se despliega nuevamente donde dice Type Here dar doble clic y escribir Abrir.

- Aparece en la pestaa de Action Edition una lnea cuyo nombre es actionAbrir , clic derecho sobre esta y escogemos la opcin Go to Slot

-Escogemos la seal la seal de activacin del evento abrir seleccionando la opcin triggered() y clic en ok

- Cuando hagamos esto el programa nos llevara al bloque de cdigo del evento abrir, all escribimos las lneas de cdigo para obtener la ruta de la imagen.

Agregamos las libreras: <qdebug.h> y <QtGui> void EjemploAbrirGuardar::on_actionAbrir_triggered() { QString miRutaImagen = QFileDialog::getOpenFileName(this,tr("Open Image"), "", tr("Image Files (*.png *.jpg *.bmp)")); qDebug()<<"Ruta: " + miRutaImagen; } Ruta imagen es una variable tipo QString que almacena cadena de caracteres y que recibir la ruta retorne la ventana de dialogo. Esta parte del codigo QFileDialog::getOpenFileName(this,tr("Open Image"), "", tr("Image Files (*.png *.jpg *.bmp)")); creara una ventana de dialogo con el nombre Open Image, toma como directorio por defecto la carpeta donde est el proyecto, y con un filtro que en este caso permitir ver imgenes con extensin png, jpg y bmp

Con qDebug()<<"Ruta: " + miRutaImagen; imprimimos el mensaje Ruta: concatenado con el contenido de miRutaimagen.

El evento abrir tendr como finalidad abrir la imagen y convertirla a escala de grises. El contenido final es el siguiente: void segmentador::on_actionAbrir_triggered() { //cargar la ruta de la imagen,esto es de Qt QString miRutaImagen = QFileDialog::getOpenFileName(this,tr("Open Image"), "", tr("Image Files (*.png *.jpg *.bmp)")); //Validar que la ruta obtenida no este vaca if(!miRutaImagen.isNull()){ //cargar una imagen con la ruta obtenida imgOriginal.cargarImagen(miRutaImagen.toStdString().c_str(),CV_LOAD_IMAGE_COLOR); //cargar una imagen auxiliar con la imagen que se cargo previamente y hacerle un //redimensionamiento en las medidas igual a 190x150 que es igual al tamao que //designamos para la interfaz imgOriginal190x150.escalarImagen(&imgOriginal,190,150); //cargamos una imagen de Qt con la imagen auxiliar, a la cual le hacemos una conversin para //que sea compatible imgQt.convertirImagen(&imgOriginal190x150); //usamos el mtodo mostrar imagen, ingresndole el nombre del "label" en el que se mostrara y //un apuntador a la "Ui" o interfaz de usuario imgQt.mostrarImagen("ImgenOriginal",this); //creamos una imagen con formato de escala de grises imagenGris.crearImagen(imgOriginal.ancho,imgOriginal.alto,1,IPL_DEPTH_8U); //en imagenGris almacenamos la imgOriginal pero en formato de escala de grises imagenGris.RGBaGrises(&imgOriginal); //redimensionamos la imagen imgGray190x150.escalarImagen(&imagenGris,190,150); //convertimos la imagen gris a RGB para que pueda ser reconocida por //el formato de imagen que maneja Qt y se la cargamos a QimagenGrisSalida imgQtGris.convertirImagenGris(&imgGray190x150); //mostramos la imagen en un label que se llama "ImagenGrayScale" de la Ui imgQtGris.mostrarImagen("ImagenGrayScale",this);

banderaGuardar=false; banderaGuardarR=false; banderaGuardarG=false; banderaGuardarB=false; banderaGuardarGris=false; } }

- Primero agregamos las libreras de Giovanny Espinal que son ImagenCv.h , ImagenCv.cpp, ImagenQt.h e ImagenQt.cpp - Copiamos los archivos en la carpeta del proyecto para abrirlos despus con Qt. - Despus clic derecho en la carpeta del proyecto y escogemos la opcin Add Existing Files

- Buscamos los archivos, los seleccionamos todos y damos clic en open o abrir

-En el archivo ejemploabrirguardar.h agregamos las siguientes libreras: #include "Imagen/imagenCv.h" #include "Imagen/imagenQT.h" E instanciamos los siguientes objetos: ImagenCv imgOriginal; ImagenCv imagenGris; ImagenCv imgGray190x150; ImagenCv imgOriginal190x150; ImagenQt imgQt; ImagenQt imgQtGris;

- Agregamos 2 lable:

- Seleccionamos uno y le cambiamos el tamao a 190x150 y en el campo de objectName le ponemos el nombre de ImgenOriginal al segundo le damos las dimensiones del anterior pero le ponemos el nombre de ImagenGrayScale.

- Cuando lo corremos y cargamos la imagen tenemos el siguiente resultado:

Para crear la opcin de Guardar: - En el men archivo, de la misma manera que hicimos la opcin Abrir hacemos una que diga Guardar Gris, - Vamos al slot de la accin guardar gris de la misma forma que lo hicimos con la opcin abrir (clic derecho >go to slot >triggered()>ok) Y copiamos el siguiente codigo: void EjemploAbrirGuardar::on_actionGuardar_Gris_triggered() { if(imagenGris.obtenerImagen()!=NULL){ GuardarGris=QFileDialog::getSaveFileName(this,tr("Guardar Imagen"),"",tr("Image Files (*.png *.jpg *.bmp)")); if(!GuardarGris.isNull()){ imagenGris.guardarImagen(GuardarGris.toStdString().c_str()); } } } - Adems en el archivo ejemploabrirguardar.h instanciamos un objeto del tipo QString que se llamara GuardarGris y que guardara la ruta donde se almacenara la imagen

QString GuardarGris;

Bibliografa Ejemplo de un Bloc de Notas con QT Creator, [Web en lnea]. http://www.youtube.com/watch?v=rr_sdty3lSg [Consulta: 24-02-2013] Espinal Giovanni, Tutorial OPEN CV, 2011 Gary Bradsky y Adrian Kaehler OReilly, Learning Open Cv, 2008

Vous aimerez peut-être aussi