Manejo de Bibliotecas Opencv - Electronica - FRBA ... afurfaro/Info1/Opencv/opencv.pdf · Parametros…

  • View
    212

  • Download
    0

Embed Size (px)

Transcript

  • OpencvPrimer Ejemplo

    Aplicaciones y mas funcionesSegundo Ejemplo

    Manejo de BibliotecasOpencv

    Alejandro Furfaro

    Setiembre 2010

    Alejandro Furfaro Manejo de BibliotecasOpencv

  • OpencvPrimer Ejemplo

    Aplicaciones y mas funcionesSegundo Ejemplo

    Agenda

    1 Opencv.

    2 Primer Ejemplo.

    3 Aplicaciones y masFunciones.

    4 Segundo Ejemplo

    Alejandro Furfaro Manejo de BibliotecasOpencv

  • OpencvPrimer Ejemplo

    Aplicaciones y mas funcionesSegundo Ejemplo

    CaractersticasComponentesNomenclaturaParametros

    Que es Opencv?

    OpenCV es una biblioteca open source para C/C++ paraprocesamiento de imagenes y vision computarizada,desarrollada inicialmente por Intel.Su primer version estable fue liberada en 2006.En Octubre de 2009, se libero el segundo releasemayor: OpenCV v2http://opencv.willowgarage.com/wiki/

    Alejandro Furfaro Manejo de BibliotecasOpencv

  • OpencvPrimer Ejemplo

    Aplicaciones y mas funcionesSegundo Ejemplo

    CaractersticasComponentesNomenclaturaParametros

    Generalidades

    Disponible en Linux, Mac, y WindowsTiene estructuras basicas de datos para operaciones conmatrices y procesamiento de imagenes.Permite visualizar datos muy sencillamente y extraerinformacion de imagenes y videos.Tiene funciones de captura y presentacion de imagenes.

    Alejandro Furfaro Manejo de BibliotecasOpencv

  • OpencvPrimer Ejemplo

    Aplicaciones y mas funcionesSegundo Ejemplo

    CaractersticasComponentesNomenclaturaParametros

    Opencv se compone de 4 Modulos

    cvContiene las Funciones principales de la bibliotecacvauxContiene las Funciones Auxiliares (experimental)cxcoreContiene las Estructuras de Datos y Funciones de soportepara Algebra linealHighguiFunciones para manejo de la GUI

    Alejandro Furfaro Manejo de BibliotecasOpencv

  • OpencvPrimer Ejemplo

    Aplicaciones y mas funcionesSegundo Ejemplo

    CaractersticasComponentesNomenclaturaParametros

    Nombres de funciones y datos

    Convenciones para los nombres de las FuncionescvActionTargetMod (...)Action: Funcion core. Ej: set, create.Target: Elemento destino de la Accion. Ej: Contorno,polgono.Mod : Modificadores opcionales. Ej: Tipo de argumento.Matrix data typesCV (S|U|F)CS: Entero Signado, U: Entero no Signado, F: Float

    Ej: CV 8UC1 : matriz de un canal de 8 bits no signados,CV 32FC2: matriz de dos canales de 32 bits punto flotante.

    Alejandro Furfaro Manejo de BibliotecasOpencv

  • OpencvPrimer Ejemplo

    Aplicaciones y mas funcionesSegundo Ejemplo

    CaractersticasComponentesNomenclaturaParametros

    Parametros de imagenes y headers

    Tipos de datos de imagenesIPL DEPTH (S|U|F)

    Ej: IPL DEPTH 8U : imagen de 8 bits no signados.IPL DEPTH 32F: imagen de 32 bits punto flotante.

    Headers#include #include #include #include // innecesario, incluido en cv.h

    Alejandro Furfaro Manejo de BibliotecasOpencv

  • OpencvPrimer Ejemplo

    Aplicaciones y mas funcionesSegundo Ejemplo

    Manos a la obraAnalisisIplImageMiembros de IplImageOpencv gira alrrededor deIplImage

    1 Abrir eje1.c2 Para compilar. . .3 gcc -oeje1 eje1.c -g -ggdb pkg-config --cflags

    --libs opencv -Wall

    Alejandro Furfaro Manejo de BibliotecasOpencv

  • OpencvPrimer Ejemplo

    Aplicaciones y mas funcionesSegundo Ejemplo

    Manos a la obraAnalisisIplImageMiembros de IplImageOpencv gira alrrededor deIplImage

    Que hicimos?

    Carga de una imagenIplImage *image = cvLoadImage("Lena.bmp");

    Crear y Ubicar una ventanacvNamedWindow ("ejemplo1", CV_WINDOW_AUTOSIZE);cvMoveWindow ("ejemplo1", 100, 100);// desde borde superior izquierdo

    Mostrar la imagen en la ventana creadacvShowImage("ejemplo1", image);

    Liberar recursoscvReleaseImage(&image);

    Alejandro Furfaro Manejo de BibliotecasOpencv

  • OpencvPrimer Ejemplo

    Aplicaciones y mas funcionesSegundo Ejemplo

    Manos a la obraAnalisisIplImageMiembros de IplImageOpencv gira alrrededor deIplImage

    Prefijo cv

    Carga de una imagenIplImage *image = cvLoadImage("Lena.bmp");

    Crear y Ubicar una ventanacvNamedWindow ("ejemplo1", CV WINDOW AUTOSIZE);cvMoveWindow ("ejemplo1", 100, 100);//desdeborde superior izquierdo

    Mostrar la imagen en la ventana creadacvShowImage("ejemplo1", image);

    Liberar recursoscvReleaseImage(&image);

    Alejandro Furfaro Manejo de BibliotecasOpencv

  • OpencvPrimer Ejemplo

    Aplicaciones y mas funcionesSegundo Ejemplo

    Manos a la obraAnalisisIplImageMiembros de IplImageOpencv gira alrrededor deIplImage

    Accion

    Carga de una imagenIplImage *image = cvLoadImage("Lena.bmp");

    Crear y Ubicar una ventanacvNamedWindow ("ejemplo1", CV WINDOW AUTOSIZE);cvMoveWindow ("ejemplo1", 100, 100);//desdeborde superior izquierdo

    Mostrar la imagen en la ventana creadacvShowImage("ejemplo1", image);

    Liberar recursoscvReleaseImage(&image);

    Alejandro Furfaro Manejo de BibliotecasOpencv

  • OpencvPrimer Ejemplo

    Aplicaciones y mas funcionesSegundo Ejemplo

    Manos a la obraAnalisisIplImageMiembros de IplImageOpencv gira alrrededor deIplImage

    Destino

    Carga de una imagenIplImage *image = cvLoadImage("Lena.bmp");

    Crear y Ubicar una ventanacvNamedWindow("ejemplo1", CV WINDOW AUTOSIZE);cvMoveWindow("ejemplo1", 100, 100);//desdeborde superior izquierdo

    Mostrar la imagen en la ventana creadacvShowImage("ejemplo1", image);

    Liberar recursoscvReleaseImage(&image);

    Alejandro Furfaro Manejo de BibliotecasOpencv

  • OpencvPrimer Ejemplo

    Aplicaciones y mas funcionesSegundo Ejemplo

    Manos a la obraAnalisisIplImageMiembros de IplImageOpencv gira alrrededor deIplImage

    IplImage: La Estructura

    typedef struct IplImage{int nSize;int ID;int nChannels;int alphaChannel;int depth;char colorModel[4];char channelSeq[4];int dataOrder;int origin;int align;int width;int height;

    struct IplROI *roi;struct IplImage

    *maskROI;void *imageId;struct IplTileInfo

    *tileInfo;int imageSize;char *imageData;int widthStep;int BorderMode[4];int BorderConst[4];char *imageDataOrigin;

    } IplImage;

    Alejandro Furfaro Manejo de BibliotecasOpencv

  • OpencvPrimer Ejemplo

    Aplicaciones y mas funcionesSegundo Ejemplo

    Manos a la obraAnalisisIplImageMiembros de IplImageOpencv gira alrrededor deIplImage

    IplImage: La Estructura: Contenido

    Nsize: sizeof (IplImage)ID: Version, siempre igual a 0nchannels: Numero de canales. La mayora de lasfunciones OpenCV soportan 1 a 4 canales.alphaChannel: Ignorado por OpenCV

    Alejandro Furfaro Manejo de BibliotecasOpencv

  • OpencvPrimer Ejemplo

    Aplicaciones y mas funcionesSegundo Ejemplo

    Manos a la obraAnalisisIplImageMiembros de IplImageOpencv gira alrrededor deIplImage

    IplImage: La Estructura: Contenido

    depth: Profundidad del canal en bits + el bit de signoopcional (IPL DEPTH SIGN).

    IPL DEPTH 8U: entero no signado de 8 bits.IPL DEPTH 8S: entero signado de 8 bits.IPL DEPTH 16U: entero no signado de 16 bits.IPL DEPTH 16S: entero signado de 16 bits.IPL DEPTH 32S: entero signado de 32 bits.IPL DEPTH 32F: Punto flotante simple precision.IPL DEPTH 64F: Punto flotante doble precision.

    Alejandro Furfaro Manejo de BibliotecasOpencv

  • OpencvPrimer Ejemplo

    Aplicaciones y mas funcionesSegundo Ejemplo

    Manos a la obraAnalisisIplImageMiembros de IplImageOpencv gira alrrededor deIplImage

    IplImage: La Estructura: Contenido

    colorModel: Ignorado por OpenCV. La funcion CvtColorde OpenCV requiere los espacios de color origen ydestino como parametros.channelSeq: Ignorado por OpenCV.dataOrder:

    0: IPL DATA ORDER PIXEL - canales de colorentrelazados.1: canales de color separados.CreateImage solo crea imagenes con canalesentrelazados. Por ejemplo, el layout comun de colores deuna imagen es: b 00 g 00 r 00 b 10 g 10 r 10 ...

    Alejandro Furfaro Manejo de BibliotecasOpencv

  • OpencvPrimer Ejemplo

    Aplicaciones y mas funcionesSegundo Ejemplo

    Manos a la obraAnalisisIplImageMiembros de IplImageOpencv gira alrrededor deIplImage

    IplImage: La Estructura: Contenido

    origin:0: origen extremo superior izquierdo.1: origen extremo inferior izquierdo, (estilo Windowsbitmap).

    align: Alineacion de las filas de la imagen(4 u 8). OpenCVignora este campo usando en su lugar widthStep.width: Ancho de la Imagen en pixels.height: Alto de la Imagen en pixels.

    Alejandro Furfaro Manejo de BibliotecasOpencv

  • OpencvPrimer Ejemplo

    Aplicaciones y mas funcionesSegundo Ejemplo

    Manos a la obraAnalisisIplImageMiembros de IplImageOpencv gira alrrededor deIplImage

    IplImage: La Estructura: Contenido

    roi: Region Of Interest (ROI). Si no es NULL, se procesasolo esta region de la imagen.maskROI: Debe ser NULL en OpenCV.imageId: Debe ser NULL en OpenCV.tileInfo: Debe ser NULL en OpenCV.imageSize: Tamano en bytes de la imagen. Para datosentrelazados, equivale a:image->height * image->widthStep

    Alejandro Furfaro Manejo de BibliotecasOpencv

  • OpencvPrimer Ejemplo

    Aplicaciones y mas funcionesSegundo Ejemplo

    Manos a la obraAnalisisIplImageMiembros de IplImageOpencv gira alrrededor deIplImage

    IplImage: La Estructura: Contenido

    imageData: Puntero a los datos alineados de la imagen.widthStep: Ta mano en bytes de una fila de la imagenalineadaBorderMode y BorderConst: Modo de completamientodel borde, ignorado por OpenCV.imageDataOrigin: Puntero el origen de los datos de laimagen (no necesariamente alineados). Usado paradesalojar la imagen.

    Alejandro Furfaro Manejo de BibliotecasOpencv

  • OpencvPrimer Ejemplo

    Aplicaciones y mas funcionesSegundo Ej