Está en la página 1de 26

Introduccin

Estructuras principales
Crear una nueva imagen
Funciones de Entrada/Salida de imgenes
Liberar memoria de imgenes y ventanas
Captura de video con Opencv

Introduccin a OpenCV
Luis Enrique Coronado Ziga
Universidad Autnoma de San Luis Potos
Facultad de Ingeniera
Ingeniera en Mecatrnica

2013

Luis Enrique Coronado Ziga

Introduccin a OpenCV

Introduccin
Estructuras principales
Crear una nueva imagen
Funciones de Entrada/Salida de imgenes
Liberar memoria de imgenes y ventanas
Captura de video con Opencv

Tabla de contenido
1

Introduccin

Estructuras principales

Crear una nueva imagen

Funciones de Entrada/Salida de imgenes

Liberar memoria de imgenes y ventanas

Captura de video con Opencv

Luis Enrique Coronado Ziga

Introduccin a OpenCV

Introduccin
Estructuras principales
Crear una nueva imagen
Funciones de Entrada/Salida de imgenes
Liberar memoria de imgenes y ventanas
Captura de video con Opencv

Introduccin
OpenCV es una biblioteca libre y multiplataforma de procesamiento
de imagen originalmente creada por Intel.

Luis Enrique Coronado Ziga

Introduccin a OpenCV

Introduccin
Estructuras principales
Crear una nueva imagen
Funciones de Entrada/Salida de imgenes
Liberar memoria de imgenes y ventanas
Captura de video con Opencv

La versin ms reciente es la 2.4.8


+ 2500 algoritmos y funciones

Luis Enrique Coronado Ziga

Introduccin a OpenCV

Introduccin
Estructuras principales
Crear una nueva imagen
Funciones de Entrada/Salida de imgenes
Liberar memoria de imgenes y ventanas
Captura de video con Opencv

Estructuras principales

CvPoint
Coordenadas de un pixel en una imagen.
int x
int y

Coordenada en x
Coordenada en y

Ejemplo:

CvPoint p = cvPoint(100,100); // Coordenada (100,100)

Luis Enrique Coronado Ziga

Introduccin a OpenCV

Introduccin
Estructuras principales
Crear una nueva imagen
Funciones de Entrada/Salida de imgenes
Liberar memoria de imgenes y ventanas
Captura de video con Opencv

CvPoint2D32f
Coordenadas 2D otantes
oat x
oat y

Coordenada en x
Coordenada en y

Ejemplo:

CvPoint2D32f p2Df = cvPoint2D32f(10.1,50.1 );

Luis Enrique Coronado Ziga

Introduccin a OpenCV

Introduccin
Estructuras principales
Crear una nueva imagen
Funciones de Entrada/Salida de imgenes
Liberar memoria de imgenes y ventanas
Captura de video con Opencv

CvPoint3D32f
Coordenadas 3D otantes
oat x
oat y
oat z

Coordenada en x
Coordenada en y
Coordenada en z

Ejemplo:

CvPoint3D32f p3Df = cvPoint3D32f(10.1,50.1,100.1);

Luis Enrique Coronado Ziga

Introduccin a OpenCV

Introduccin
Estructuras principales
Crear una nueva imagen
Funciones de Entrada/Salida de imgenes
Liberar memoria de imgenes y ventanas
Captura de video con Opencv

CvSize
Tamao de una regin rectangular o imagen en pixeles
int width
int height

Anchura
Altura

Ejemplo:

CvSize s = cvSize(100,100); // Tamao de la imagen 100x100

Luis Enrique Coronado Ziga

Introduccin a OpenCV

Introduccin
Estructuras principales
Crear una nueva imagen
Funciones de Entrada/Salida de imgenes
Liberar memoria de imgenes y ventanas
Captura de video con Opencv

CvRect
Rectngulo en la imagen, con el origen en el pxel superior
izquierdo.
int
int
int
int

x
y;
width
height

Coordenada en x
Coordenada en y
Ancho del rectngulo
Alto del rectngulo

Ejemplo:

CvRect r = cvRect(20,30,100,100); // Rectngulo de 100x100 con


origen en (20,30)

Luis Enrique Coronado Ziga

Introduccin a OpenCV

Introduccin
Estructuras principales
Crear una nueva imagen
Funciones de Entrada/Salida de imgenes
Liberar memoria de imgenes y ventanas
Captura de video con Opencv

CvScalar
Valores de un pixel. Puede contener de 1 a 4 valores (segn el
nmero de canales).
double val[4];

Valor del pixel

Ejemplo:

CvScalar c = cvScalar(0,0,90); // Azul = Verde = 0, Rojo = 90

Luis Enrique Coronado Ziga

Introduccin a OpenCV

Introduccin
Estructuras principales
Crear una nueva imagen
Funciones de Entrada/Salida de imgenes
Liberar memoria de imgenes y ventanas
Captura de video con Opencv

IplImage
Estructura principal de OpenCV para representar imgenes

Donde width y heigth representan la anchura y altura de la imagen,


nChannels el nmero de canales, y depth la profundidad de color.
Los valores de los pixeles se encuentran en el apuntador imageData.

Luis Enrique Coronado Ziga

Introduccin a OpenCV

Introduccin
Estructuras principales
Crear una nueva imagen
Funciones de Entrada/Salida de imgenes
Liberar memoria de imgenes y ventanas
Captura de video con Opencv

El tamao de la la se representa con widthStep. Al nal de cada


la puede haber algunos pixeles sobrantes llenados con ceros.
Ejemplo:

IplImage* img= cvLoadImage("imagen.jpg", 1);


int ancho = img->width;
int alto = img->height;
int canales = img->nChannels;
int paso = img->widthStep/sizeof(unsigned char);
unsigned char * matriz = (unsigned char*)img->imageData;

Luis Enrique Coronado Ziga

Introduccin a OpenCV

Introduccin
Estructuras principales
Crear una nueva imagen
Funciones de Entrada/Salida de imgenes
Liberar memoria de imgenes y ventanas
Captura de video con Opencv

Ejemplo:
// O b t e n e r l o s d a t o s de l a imagen
u n s i g n e d c h a r m a t r i z = ( u n s i g n e d c h a r ) img>imageData ;
// R e c o r r e r t o d a l a imagen y o b t e n e r e l v a l o r de l o s
p i x e l e s por canal .
f o r ( i n t i = 0 ; i <a l t o ; i ++) {
f o r ( i n t j =0; j <ancho ; j ++) {
A z u l = m a t r i z [ i p a s o+j c a n a l e s + 0 ] ;
Verde = m a t r i z [ i p a s o+j c a n a l e s + 1 ] ;
Rojo = m a t r i z [ i p a s o+j c a n a l e s + 2 ] ;
}
}

Luis Enrique Coronado Ziga

Introduccin a OpenCV

Introduccin
Estructuras principales
Crear una nueva imagen
Funciones de Entrada/Salida de imgenes
Liberar memoria de imgenes y ventanas
Captura de video con Opencv

Crear una nueva imagen


cvCreateImage
Accin:Cargar una imagen desde disco.
Valor de retorno: Iplimage*
CvSize size Tamao de una imagen
Profundidad de la imagen
Parmetros: int depth
int channels Nmero de canales
Ejemplo:

IplImage* img= cvCreateImage(cvSize(500,500),


IPL_DEPTH_8U,3);

Luis Enrique Coronado Ziga

Introduccin a OpenCV

Introduccin
Estructuras principales
Crear una nueva imagen
Funciones de Entrada/Salida de imgenes
Liberar memoria de imgenes y ventanas
Captura de video con Opencv

Luis Enrique Coronado Ziga

Introduccin a OpenCV

Introduccin
Estructuras principales
Crear una nueva imagen
Funciones de Entrada/Salida de imgenes
Liberar memoria de imgenes y ventanas
Captura de video con Opencv

Funciones de Entrada/Salida de imgenes


cvLoadImage
Accin:Cargar una imagen desde disco.
Valor de retorno: Iplimage*
Parmetros:

const char* name


int iscolor

Ruta de la imagen
Si es igual 0 la imagen tendr un canal,
si es mayor a 0 ser RGB

Ejemplo:

IplImage* img= cvLoadImage("imagen.jpg", 1);

Luis Enrique Coronado Ziga

Introduccin a OpenCV

Introduccin
Estructuras principales
Crear una nueva imagen
Funciones de Entrada/Salida de imgenes
Liberar memoria de imgenes y ventanas
Captura de video con Opencv

cvSaveImage
Accin:Guardar una imagen en disco.
Valor de retorno: int
Parmetros:

const char *name

IplImage *image

Nombre de la nueva imagen incluyendo


su extensin
Imagen a guardar

Ejemplo:

cvSaveImage("resultado.jpg", img);

Luis Enrique Coronado Ziga

Introduccin a OpenCV

Introduccin
Estructuras principales
Crear una nueva imagen
Funciones de Entrada/Salida de imgenes
Liberar memoria de imgenes y ventanas
Captura de video con Opencv

cvWaitKey
Accin:Esperar la pulsacin de una tecla.
Valor de retorno: int (cdigo ASCII de la tecla)
Parmetros:

int delay

Tiempo medido en milisegundos

Ejemplo:

char c = cvWaitKey(1000);

Luis Enrique Coronado Ziga

Introduccin a OpenCV

Introduccin
Estructuras principales
Crear una nueva imagen
Funciones de Entrada/Salida de imgenes
Liberar memoria de imgenes y ventanas
Captura de video con Opencv

cvNamedWindow
Accin:Crear una ventana.
Valor de retorno: int
Parmetros:

const char* name


int ags

Nombre de la nueva ventana


Solo si es 0 se permite modicar
el tamao de la ventana

Ejemplo:

cvNamedWindow("Ventana", 0 );

Luis Enrique Coronado Ziga

Introduccin a OpenCV

Introduccin
Estructuras principales
Crear una nueva imagen
Funciones de Entrada/Salida de imgenes
Liberar memoria de imgenes y ventanas
Captura de video con Opencv

cvShowImage
Accin: Salida de imgenes en pantalla.
Valor de retorno: int
Parmetros:

const char* name


const IplImage * image

Nombre de la ventana
Imagen a ser mostrada

Ejemplo:

cvShowImage("Ventana", img);

Luis Enrique Coronado Ziga

Introduccin a OpenCV

Introduccin
Estructuras principales
Crear una nueva imagen
Funciones de Entrada/Salida de imgenes
Liberar memoria de imgenes y ventanas
Captura de video con Opencv

Liberar memoria de imgenes y ventanas

cvDestroyWindows
Accin:Destruir una ventana.
Valor de retorno: int
Parmetros:

const char* name

Ventana que ser destruida

Ejemplo:

cvDestroyWindows("Ventana");
cvDestroyAllWindows() //Destruye todas las ventanas

Luis Enrique Coronado Ziga

Introduccin a OpenCV

Introduccin
Estructuras principales
Crear una nueva imagen
Funciones de Entrada/Salida de imgenes
Liberar memoria de imgenes y ventanas
Captura de video con Opencv

cvReleaseImage
Accin:Liberar memoria de una imagen.
Valor de retorno: int
Parmetros:

IplImage ** image

Imagen que ser eliminada

Ejemplo:

cvReleaseImage(&img)

Luis Enrique Coronado Ziga

Introduccin a OpenCV

Introduccin
Estructuras principales
Crear una nueva imagen
Funciones de Entrada/Salida de imgenes
Liberar memoria de imgenes y ventanas
Captura de video con Opencv

Ejercicios:

Mostrar los valores RGB de una imagen


Mostrar y guardar el negativo de una imagen

Luis Enrique Coronado Ziga

Introduccin a OpenCV

Introduccin
Estructuras principales
Crear una nueva imagen
Funciones de Entrada/Salida de imgenes
Liberar memoria de imgenes y ventanas
Captura de video con Opencv

Captura de video con Opencv

La estructura CvCapture se utiliza para la lectura de imgenes de


una cmara o de un archivo de video. Una nueva instancia de CvCapture se puede crear como sigue:
CvCapture* captura = cvCreateCameraCapture(indice);
El parmetro indice indica a que cmara se va a acceder. Si solo
se tiene una cmara el valor debe ser igual a 0

Luis Enrique Coronado Ziga

Introduccin a OpenCV

Introduccin
Estructuras principales
Crear una nueva imagen
Funciones de Entrada/Salida de imgenes
Liberar memoria de imgenes y ventanas
Captura de video con Opencv

La funcin cvQueryFrame(CvCapture*) devuelve un puntero a


una imagen tomada desde una cmara, y tiene como argumento
un puntero a una estructura CvCapture.
I p l I m a g e img = NULL ;
C v C ap t u r e c a p t u r a = c v C r e a t e C a m e r a C a p t u r e ( 0 ) ;
cvNamedWindow ( " Ventana " , 0 ) ;
img = cvQueryFrame ( c a p t u r a ) ;
cvShowImage ( " Ventana " , img ) ;
c h a r c = cvWaitKey ( ) ;
cvDestroyWindow ( " Ventana " ) ;
c v R e l e a s e I m a g e (&img ) ;

Luis Enrique Coronado Ziga

Introduccin a OpenCV

Introduccin
Estructuras principales
Crear una nueva imagen
Funciones de Entrada/Salida de imgenes
Liberar memoria de imgenes y ventanas
Captura de video con Opencv

Ejercicios:

Video desde la cmara web.


Negativo del video.

Luis Enrique Coronado Ziga

Introduccin a OpenCV

También podría gustarte