Autor Tema: ::Linux+opencv ::Ejercicios:  (Leído 5607 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado pajaro

  • PIC24H
  • ******
  • Mensajes: 1121
::Linux+opencv ::Ejercicios:
« en: 15 de Agosto de 2014, 17:59:01 »
hola compañeros

voy a dedicar este hilo a practicar los primeros pinitos de opencv y linux
están invitados todos ustedes:

Indice de ejercicios:
===================

000.- Ejercicio 000: primera ejecución : programa por defecto de codeblocks
001.- Ejercicio 001: Crear 1 ventana vacía y ponerle un nombre
002.- Ejercicio 002: Crear 2 ventanas vacías.
003.- Ejercicio 003: Mostrar una imagen en ventana nueva
004.- Ejercicio 004: Crear una imagen 400x300 en color.
005.- Ejercicio 005: Cambiar el tamaño de la ventana.
006.- Ejercicio 006: Cambiar el color de la imagen de la ventana.
007.- Ejercicio 007: Mover ventana
008.- Ejercicio 008: Rotar una imagen
009.- Ejercicio 009:

010.- Ejercicio 010: dibujar una recta
011.- Ejercicio 011: dibujar un circulo en color y grosor.
012.- Ejercicio 012: dibujar un cuadrado en una ventana
013.- Ejercicio 013: dibujar una elipse
014.- Ejercicio 014:
015.- Ejercicio 015:
016.- Ejercicio 016:
017.- Ejercicio 017:
018.- Ejercicio 018:
019.- Ejercicio 019:

020.- Ejercicio 020:
021.- Ejercicio 021:
022.- Ejercicio 022:
023.- Ejercicio 023:
024.- Ejercicio 024:
025.- Ejercicio 025:
026.- Ejercicio 026:
027.- Ejercicio 027:
028.- Ejercicio 028:
029.- Ejercicio 029:


« Última modificación: 22 de Agosto de 2014, 09:46:37 por pajaro »


Desconectado pajaro

  • PIC24H
  • ******
  • Mensajes: 1121
Re: ::Linux+opencv ::Ejercicios:
« Respuesta #2 en: 15 de Agosto de 2014, 18:06:11 »
hola compañeros

yo usare codeblocks para los ejercicios
usdes pueden usar el entono que deseen.

Para crear un nuevo proyecto:

en code::blocks: esta en ingles pero se entiende:

abrimos el programa: una vez abierto:

FILE  >> NEW >> PROYECT  abre una ventana y alli

CATEGORY >> [Console]  en el desplegable

debajo elegimos:

OPENCV Proyect: se pone azul


pulsamos sobre el boton

GO

sin marcar nada

NEXT

le ponemos lo que nos pide:


Titulo del proyecto:
ruta donde lo guardara: /home/user/code-blocks
Nombre del proyecto:

al ponerle el titulo el pone todo lo demás en referencia con el titulo:
si le das una ruta de guardar dentro te creara una carpeta con el nombre del proyecto
y dentro el proyecto

 puesto el Titulo _n1-Ejercicio1

lo designo n1: de nivel basico

pulsamos en NEXT

el compilador queremos que sea el gcc

lo dejamos tal como esta

pulsamos finish


nos crea un proyecto no vacio: pero con las estructura deseada.
-| sources-> main.cpp
-| others ->.jpg

tenemos creado el proyecto:

para abrir el código fuente doble clip en main y lo abre:


para compilar podemos darle a la rueda dentada con forma de rosquilla o podemos hacer:

menú principal -> BUILD -> Build o por comando rápido Ctrol+F9


para ejecutar podemos pulsar F8 o el icono de play de color verde.


en nuestro caso aparecerá una hermosa mujer...


para parar la ejecución pulsamos la x de color rojo o  o

menu principal -> Build -> abort


para crear un nuevo proyecto haremos lo mismo pero cambiaremos el contenido del fichero main.cpp

después guardamos el fichero ctrol+s o File -> save file

Os recomiendo:

cerrar y guardar el proyecto antes de crear uno nuevo

FILE >> CLOSE PROYECT


« Última modificación: 17 de Agosto de 2014, 12:59:47 por pajaro »

Desconectado pajaro

  • PIC24H
  • ******
  • Mensajes: 1121
Re: ::Linux+opencv ::Ejercicios:
« Respuesta #3 en: 15 de Agosto de 2014, 18:13:07 »
:: por el método de consola y mediante cmake::
=====================================

cmake
CMake es un conjunto de herramientas destinadas a controlar el proceso de construcción de proyectos software,
 de forma independiente al entorno de trabajo, compiladores, etc.

Con CMake No compilamos directamente un proyecto,
sino que nos genera un proyecto genérico de CMake con el cual luego tenemos la posibilidad
de crear diversos “esquemas” o "Plantillas basicas" para nuestras herramientas de compilación.

Con CMAKE podedemos genrar para los siguientes:

Makefiles genéricos.
Proyectos de Visual Studio.
Proyectos de XCode.
Proyectos de Code::Blocks.
Proyectos de Kdevelop.


Explicación:

en nuestro home creamos una carpeta para guardar nuestros proyectos

cd [enter]  -->no colocamos en nuestro home  :: /home/miuser

pwd  ->> nos dice en que ruta estamos


mkdir proyectos  --> creamos directorio


cd proyectos      --> entramos dentro

mkdirDisplayImage  --> creamos directorio del proyecto

cd proyectos      --> entramos dentro


touch CMakeLists.txt   --> creamos fichero vació con nombre

nano CMakeLists.txt --> escribimos dentro

Código: [Seleccionar]
make_minimum_required(VERSION 2.8)
project( imagen1 )
find_package( OpenCV REQUIRED )
add_executable( imagen1 display_image.cpp )
target_link_libraries( imagen1 ${OpenCV_LIBS} )

para guardar combinación de teclas ctrol + o

para salir del editor nano ctrol + x



touch display_image.cpp --> creamos fichero

nano display_image.cpp --> editamos fichero

ponemos dentro:

Código: C++
  1. include <stdio.h>
  2. #include <opencv2/opencv.hpp>
  3. #include <opencv2/highgui/highgui_c.h>
  4.  
  5. using namespace cv;
  6.  
  7. int main( int argc, char** argv )
  8. {
  9.   Mat image;
  10.   image = imread( argv[1], 1 );
  11.  
  12.   if( argc != 2 || !image.data )      
  13.     {
  14.       printf( "No imagen o datos \n" );   //mensaje en caso de error
  15.       return -1;
  16.     }
  17.  
  18.   namedWindow( "Imagen1", CV_WINDOW_AUTOSIZE ); //creo ventana
  19.  
  20.   imshow( "Imagen1", image );   //muestra imagen en ventana                                  
  21.  
  22.   waitKey(0);
  23.  
  24.   return 0;
  25.  
  26. }


para guardar ctrol+ o

para salir del editor nano ctrol +x


en este diretorio ponemos una foto jpg

por ejemplo la de lena.jpg

si hacemos ls dento del directorio nos muestra 3 archivos

CMakeLists.txt  display_image.cpp  lena.jpg

hacemos

cmake .

nos mostrara algo parecido a esto:
Código: [Seleccionar]
-- The C compiler identification is GNU 4.8.2
-- The CXX compiler identification is GNU 4.8.2
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/miuser/proyectos/DisplayImage


hacemos ls para ver lo generado:

ls

CMakeCache.txt  CMakeFiles  cmake_install.cmake  CMakeLists.txt  display_image.cpp  lena.jpg  Makefile


make

nos mostrara en colores algo parecido a esto

Código: [Seleccionar]
canning dependencies of target imagen1
[100%] Building CXX object CMakeFiles/imagen1.dir/display_image.cpp.o
Linking CXX executable imagen1
[100%] Built target imagen1


ls

CMakeCache.txt  cmake_install.cmake  display_image.cpp  lena.jpg
CMakeFiles      CMakeLists.txt       imagen1            Makefile



para ejecutar

./imagen1 lena.jpg

para finalizar la ejecución

ctrol + c




« Última modificación: 17 de Agosto de 2014, 13:18:00 por pajaro »

Desconectado pajaro

  • PIC24H
  • ******
  • Mensajes: 1121
Re: ::Linux+opencv ::Ejercicios:
« Respuesta #4 en: 15 de Agosto de 2014, 18:15:25 »
Estructura básica de un programa:


Código: C++
  1. //librerias
  2. #include <opencv2/core/core.hpp>
  3. #include <opencv2/imgproc/imgproc.hpp>
  4. #include <opencv2/highgui/highgui.hpp>
  5.  
  6. using namespace cv;
  7.  
  8. //funcion principal
  9. int main(int argc, char *argv[])
  10. {
  11. //variables
  12.   int rows = 600;
  13.   int cols = 800;
  14.  
  15.   namedWindow( "lena", CV_WINDOW_AUTOSIZE ); //crea ventana
  16.  
  17.     waitKey(0);
  18.     return 0;
  19. }
« Última modificación: 21 de Agosto de 2014, 09:25:18 por pajaro »

Desconectado pajaro

  • PIC24H
  • ******
  • Mensajes: 1121
Re: ::Linux+opencv ::Ejercicios:
« Respuesta #5 en: 15 de Agosto de 2014, 18:15:42 »
...
« Última modificación: 21 de Agosto de 2014, 09:22:05 por pajaro »

Desconectado pajaro

  • PIC24H
  • ******
  • Mensajes: 1121
Re: ::Linux+opencv ::Ejercicios:
« Respuesta #6 en: 15 de Agosto de 2014, 18:49:25 »
...
« Última modificación: 21 de Agosto de 2014, 09:13:38 por pajaro »

Desconectado pajaro

  • PIC24H
  • ******
  • Mensajes: 1121
Re: ::Linux+opencv ::Ejercicios:
« Respuesta #7 en: 15 de Agosto de 2014, 18:53:45 »
...
« Última modificación: 21 de Agosto de 2014, 09:14:23 por pajaro »

Desconectado pajaro

  • PIC24H
  • ******
  • Mensajes: 1121
Re: ::Linux+opencv ::Ejercicios:
« Respuesta #8 en: 16 de Agosto de 2014, 08:57:31 »
...
« Última modificación: 21 de Agosto de 2014, 09:15:33 por pajaro »

Desconectado pajaro

  • PIC24H
  • ******
  • Mensajes: 1121
Re: ::Linux+opencv ::Ejercicios:
« Respuesta #9 en: 16 de Agosto de 2014, 09:02:33 »

Programa 5
fuente
Código: C++
  1.  

Desconectado pajaro

  • PIC24H
  • ******
  • Mensajes: 1121
Re: ::Linux+opencv ::Ejercicios:
« Respuesta #10 en: 16 de Agosto de 2014, 09:02:56 »
Programa 000
fuente


Código: C++
  1. //////////////////////////////////////////////////////////////////////
  2. ///
  3. /// Programa n1-b000: Programa defecto carga codeblocks
  4. ///
  5. ///
  6. //////////////////////////////////////////////////////////////////////
  7. #include <opencv2/core/core.hpp>
  8. #include <opencv2/imgproc/imgproc.hpp>
  9. #include <opencv2/highgui/highgui.hpp>
  10. using namespace cv;
  11.  
  12. int main(int argc, char *argv[])
  13. {
  14.     Mat img = imread("lena.jpg", CV_LOAD_IMAGE_COLOR); //crea matriz con imagen leida
  15.     if(img.empty())                     //si no imagen retorna fuera
  16.        return -1;
  17.     namedWindow( "lena", CV_WINDOW_AUTOSIZE );  //crea ventana
  18.     imshow("lena", img);            //muestra imagen en ventana
  19.     waitKey(0);                     //espera pulsar tecla para terminal
  20.     return 0;
  21. }



« Última modificación: 22 de Agosto de 2014, 10:00:19 por pajaro »

Desconectado pajaro

  • PIC24H
  • ******
  • Mensajes: 1121
Re: ::Linux+opencv ::Ejercicios:
« Respuesta #11 en: 16 de Agosto de 2014, 09:03:20 »
Programa 001:
Descripción:
comentarios: añadir al proyecto la imagen lena.jpg


 
Código: C++
  1. //////////////////////////////////////////////////////////////////////
  2. ///
  3. /// Programa n1-b001: Crear 1 ventana vacía y ponerle un nombre
  4. ///
  5. ///
  6. //////////////////////////////////////////////////////////////////////
  7. #include <opencv2/core/core.hpp>
  8. #include <opencv2/imgproc/imgproc.hpp>
  9. #include <opencv2/highgui/highgui.hpp>
  10. using namespace cv;
  11.  
  12. int main(int argc, char *argv[])
  13. {
  14.  
  15.     namedWindow( "Mi primera ventana", CV_WINDOW_AUTOSIZE ); //crea ventana
  16.     waitKey(0); //esperar tecla para salir
  17.     return 0;
  18. }


« Última modificación: 22 de Agosto de 2014, 10:00:47 por pajaro »

Desconectado pajaro

  • PIC24H
  • ******
  • Mensajes: 1121
Re: ::Linux+opencv ::Ejercicios:
« Respuesta #12 en: 16 de Agosto de 2014, 09:03:36 »

Programa 002:
Descripción:
comentarios:

Código: C++
  1. #include <opencv2/core/core.hpp>
  2. #include <opencv2/imgproc/imgproc.hpp>
  3. #include <opencv2/highgui/highgui.hpp>
  4. using namespace cv;
  5.  
  6. int main(int argc, char *argv[])
  7. {
  8.  
  9.     namedWindow( "Mi primera ventana", CV_WINDOW_AUTOSIZE ); //crea ventana
  10.  
  11.     waitKey(0);           //si pulsa tecla termina
  12.     return 0;
  13. }

« Última modificación: 21 de Agosto de 2014, 09:18:05 por pajaro »

Desconectado pajaro

  • PIC24H
  • ******
  • Mensajes: 1121
Re: ::Linux+opencv ::Ejercicios:
« Respuesta #13 en: 16 de Agosto de 2014, 09:04:38 »

Programa 003:
Descripción:
comentarios:

Código: C++
  1. #include <opencv2/core/core.hpp>
  2. #include <opencv2/imgproc/imgproc.hpp>
  3. #include <opencv2/highgui/highgui.hpp>
  4. using namespace cv;
  5.  
  6. int main(int argc, char *argv[])
  7. {
  8.  
  9.     namedWindow( "Ventana 1", CV_WINDOW_AUTOSIZE ); //ventana 1
  10.     namedWindow( "Ventana 2", CV_WINDOW_AUTOSIZE ); //ventana 2
  11.  
  12.     waitKey(0);
  13.     return 0;
  14. }

« Última modificación: 21 de Agosto de 2014, 09:18:36 por pajaro »

Desconectado pajaro

  • PIC24H
  • ******
  • Mensajes: 1121
Re: ::Linux+opencv ::Ejercicios:
« Respuesta #14 en: 16 de Agosto de 2014, 09:04:58 »

Programa 004:
Descripción:
comentarios:

Código: C++
  1. //#include <stdlib.h>
  2. #include <stdio.h> //para pritf
  3. #include <opencv2/core/core.hpp>
  4. #include <opencv2/imgproc/imgproc.hpp>
  5. #include <opencv2/highgui/highgui.hpp>
  6. using namespace cv;
  7.  
  8. int main(int argc, char *argv[])
  9. {
  10.     Mat img = imread("lena.jpg", CV_LOAD_IMAGE_COLOR); //carga imagen
  11.     if(img.empty()){ //si ho hay imagen sale, sino
  12.        printf(" ---> no puede cargar dato \n");
  13.        //cout <<  " ---> no puede cargar dato " << std::endl ;
  14.     return -1;
  15.     }
  16.     namedWindow( "Ventana 1", CV_WINDOW_AUTOSIZE); //crea ventana
  17.     namedWindow( "ventana 2", CV_WINDOW_AUTOSIZE ); //crea ventana
  18.  
  19.     imshow("Ventana 1", img);  //muestra la imagen en la ventana 1
  20.     waitKey(0);           //si pulsa tecla termina
  21.  
  22.     //destruye la ventana
  23.     destroyWindow( "Ventana 1" );
  24.     destroyWindow( "Ventana 2" );
  25.     return 0;
  26. }


« Última modificación: 21 de Agosto de 2014, 09:19:28 por pajaro »


 

anything