OpenCV Notes(1.Configuración del entorno de desarrollo)

Hola a todos, en este primer tutorial acerca del desarrollo de aplicaciones con opencv, les explicaré como configurar y preparar su entorno de desarrollo para trabajar con C++, python y java; pero antes de empezar veamos que es OpenCV:

Opencv es una librería escrita en c y c++, de código abierto, en la cual vienen implementados alrededor de 500 algoritmos de visión artificial, machine learning, pattern recognition, clustering, robótica etc., que nos facilitan el desarrollo de aplicaciones en tiempo real, tales como sistemas de seguridad, detección facial, reconocimiento e inspección de objetos, navegación de robots etc. Originalmente desarrollada por Intel, actualmente opencv cuenta con una comunidad de casi 47000 personas alrededor del mundo y más de 7 millones de descargas, puede ser usada en Python, java, c, c++, os, Android e incluso Matlab. Una de sus grandes bondades, que sin duda vale la pena resaltar, es su integración con CUDA, esto es realmente fascinante ya que podemos tomar provecho del cómputo en paralelo para optimizar nuestras implementaciones.

Manos a la obra!!!, para empezar, necesitamos  instalar opencv en nuestra maquina de desarrollo , para ello vamos al siguiente link y descargamos la versión correspondiente a nuestro sistema operativo (copie el archivo opencv-xxx.exe en la ubicación que usted desee):http://opencv.org/downloads.html

2016-06-17_12-17-37

Al finalizar la descarga, ejecute el archivo descargado (.exe) y sigas las instrucciones del instalador como se muestra en la figura a continuación:

2016-06-17_13-33-312

  1. Haga doble click sobre el instalador de opencv, 2. Especifique en que carpeta desea descomprimir su contenido.

Al finalizar la instalación obtendremos una estructura de carpetas como la que muestra en la imagen a continuación.

2016-06-17_14-23-07

Dentro de la carpeta build (1), vienen los binarios de la libreria(para cada lenguaje c++, java, python) y en la carpeta source(2) el código fuente

Necesitamos crear una variable de entorno para OpenCV, esto lo podemos hacer desde una terminal ejecutando el comando:

SETX <nombre de la variable de entorno> «%CD%»

2016-06-19_10-36-31.png

%CD% significa que el valor de dicha variable, es el path actual, lo que quiere decir que como resultado, nuestra variable de entorno quedaría de la siguiente forma:

OPENCV_DIR_2_4 =»C:\Users\henry\Documents\opencv-development\opencv2.4\opencv\build»

procedamos entonces a crear nuestro proyecto en visual studio, siguiendo la secuencía de imagenes a continuación:

 

image_thumb.png

image_thumb.png

  1. Seleccione Visual C++ como lenguaje
  2. “Win 32” como template
  3. “Win 32 Console Application” como tipo de proyecto
  4. defina el titulo del proyecto
  5. especifique en que folder desea guardarlo
  6. haga click sobre el boton ok
  7. siga el asistente

image.png

image_thumb.png

Visual studio IDE

image.png

1. Property Manager: desde el property Manager Panel, podemos crear diferentes Property Sheet (perfiles de configuración), una property Sheet es un archivo xml de ext .props (Property Sheets) en donde quedan guardados los cambios a nivel de configuración que hagamos sobre nuestro proyecto. por ejemplo las variables de entorno, el path en donde estan la libererias etc.

En nuestro caso en particular, debemos especificar en las propiedades del proyecto cual es el path  en donde esta instalado OpenCV para poder referenciar desde nuestro codigo,   los archivos de encabezado de  la libreria (#include <cv.h>) y los archivos .lib (lo cúal es necesario para poder compilar y ejecutar nuestro proyecto con exito), esto cada vez  que vayamos a crear un nuevo proyecto,  demasiado dispendioso no?, por lo tanto, para evitar estar repitiendo estos pasos, podemos crear  un property sheet para guardar todos los cambios a nivel de configuración, y con solo importarla en nuestros futuros proyectos vastaría. En un mismo proyecto podemos cargar más de una property sheet, esto por si tenemos muchas versions de OpenCv instaladas.  A continuación veremos como crear un property sheet.

2. Work Area: nos permite visualizar y editar nuestros archivos de código fuente.

3. Solution Explorer: nos permite visualizar la estructura de nuestro proyecto.

Crear un property Sheet

image_thumb.png

  1. Crear una nueva property Sheet (1)
  2. Cargar una property Sheet ya existente (2)

Para el ejemplo yo le llame a la property sheet opencv2.4

2016-06-17_15-48-48

  1. Nombre de la property sheet (1)
  2. ruta donde quedará guardada nuestra property sheet (2)

Configuración del proyecto

2016-06-19_9-40-42

 

  1. Abrimos la property sheet creada en el paso anterior (1)
  2. en el cuadro de propiedades, ubicamos la sección Vc++ directories(2) y modificamos el valor de la propiedad include directories(3) (ubicación de los archivos header de opencv):

Include directories:

$(OPENCV_DIR_2_4)/include

$(OPENCV_DIR_2_4)/include/opencv

$(OPENCV_DIR_2_4)/include/opencv2

  1. guardamos los cambios (4)

2016-06-19_9-49-05

  1. Abrimos la property sheet (si la cerramos en el paso anterior) (2)
  2. en el cuadro de propiedades, ubicamos la sección Vc++ directories(2) y modificamos el valor de la propiedad Library directories(2) (ubicación de las librerias/modulos de opencv):

Library Directories:

$(OPENCV_DIR_2_4)/$(PlatformTarget)/vc12/lib

  1. guardamos los cambios

2016-06-19_9-51-22

  1. Common Properties > Linker > Input > Additional Dependencies >

opencv_calib3d2413d.lib
opencv_contrib2413d.lib
opencv_core2413d.lib
opencv_features2d2413d.lib
opencv_flann2413d.lib
opencv_gpu2413d.lib
opencv_highgui2413d.lib
opencv_imgproc2413d.lib
opencv_legacy2413d.lib
opencv_ml2413d.lib
opencv_nonfree2413d.lib
opencv_objdetect2413d.lib
opencv_ocl2413d.lib
opencv_photo2413d.lib
opencv_stitching2413d.lib
opencv_superres2413d.lib
opencv_ts2413d.lib
opencv_video2413d.lib
opencv_videostab2413d.lib

Todas las librerias estan en el directorio

$(OPENCV_DIR_2_4)/x64/vc12/lib, para 64 bits y $(OPENCV_DIR_2_4)/x86/vc12/lib para 32 bits

Descripción de los modulos de OpenCV

opencv_calib3d2413d.lib : Camera calibration and 3D reconstruction functions
opencv_contrib2413d.lib : Experimental functions (Extra modules)
opencv_core2413d.lib : Core functionality
opencv_features2d2413d.lib: 2D features framework
opencv_flann2413d.lib: Clustering and Search in Multi-Dimensional spaces
opencv_gpu2413d.lib: Cuda Support (GPU accelerated module)
opencv_highgui2413d.lib: High-Level GUI (Input,Output and User Interface)
opencv_imgproc2413d.lib: Image processing functions
opencv_legacy2413d.lib: Deprecated Stuff (old versions support)
opencv_ml2413d.lib: Machine Learning
opencv_nonfree2413d.lib: Comercial functions, The module contains algorithms that may be patented in some countries or have some other limitations on the use.
opencv_objdetect2413d.lib: Tracking and Object Detection
opencv_ocl2413d.lib: OpenCL Support
opencv_photo2413d.lib: Computational Photography
opencv_stitching2413d.lib: Image stitching
opencv_superres2413d.lib: Super resolution (Optical flow)
opencv_ts2413d.lib: 2D features framework
opencv_video2413d.lib: Video Analysis
opencv_videostab2413d.lib: Video Analysis

finalmente debemos adicionar al path, la ruta:  $(OPENCV_DIR_2_4)/$(PlatformTarget)/vc12/bin

Hello world demo (c++)

Para probar que nuestro proyecto quedo debidamente configurado, vamos a ejecutar el siguiente código (demoOpencv.cpp).

#include "stdafx.h"
#include <opencv.hpp>

using namespace cv;
using namespace std;

int main()
{
Mat frame, raw, map;
VideoCapture camera;
int device = 0; //Device number.

camera.open(device);
if (!camera.isOpened()) {
cerr << "Failed to open video device " << device << " \n" << endl;
return 1;
}

while (true) {
camera >> frame;
if (frame.empty())
continue;

frame.copyTo(raw);
applyColorMap(raw, map, COLORMAP_JET);
imshow("map", map);

if (waitKey(30) == 27) //wait for 'esc' key press for 30ms. If 'esc' key is pressed, break loop
{
cout << "esc key is pressed by user" << endl;
break;
}

}
}

Resultado:

2016-06-19_11-25-29

Como lo mencione anteriormente, este es el primer tutorial del curso de desarrollo de aplicaciones usando OpenCV, espero les sea de utilidad

Saludos

Anuncio publicitario

Un comentario en “OpenCV Notes(1.Configuración del entorno de desarrollo)

  1. Carlos Morante dijo:

    Buen artículo Henry, gracias por compatir este valioso conocimiento. Quedando a la espera de muchos mas articulos.

    ¿Te le medirias a hacer algun día un articulo sobre Aforge.net y Accord.net? Son bastante interesantes aunque por el momento no le llegan todavia a opencv.

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s