Você está na página 1de 4

Visin Artificial, Instituto Tecnolgico Metropolitano

Carlos A. Madrigal

EJERCICIOS DE OPERADORES UMBRAL

Ejercicio #3
Se carga una imagen en color y se transforma a escala de grises, al final se grafican las 2
imgenes.
1. Mat imagen, ImagenGris, imagenClonada;
2. namedWindow("Original",1);
3. namedWindow("Gris",1);
4. namedWindow("Clon",1);
5. imagen= imread("c:\\lena.jpg");
6. imagenClonada = imagen.clone();
7. ImagenGris.create(imagen.rows, imagen.cols, CV_8UC1);
8. cvtColor(imagen, ImagenGris, CV_RGB2GRAY);
9. imshow("Original",imagen);
10.

imshow("Gris",ImagenGris);

11.

imshow("Clon", imagenClonada);

12.

waitKey(10000);

13.

getchar();

14.

return 0;

En 1, se crea una estructura llamada Imagen, ImagenGris e imagenClonada del tipo


MAT.
En 2, 3 y 4 se crean ventanas llamadas Original, Gris y Clonada..
En 5 se lee la imagen "lena.jpg" y se guarda en Imagen.
En 6 se se realiza una copia de Imagen y se guarda en imagenClonada.
En 7 ImagenGris.create Crea un espacio en memoria con una resolucin espacial igual a
la imagen cargada Imagen, pero con un solo canal (Para guardar imgenes en escala de
grises).
En 8 cvtColor Convierte la imagen a escala de grises haciendo una suma ponderada para
cada componente de color mediante la formula.
Gray= 0.2999 * R + 0.5870 * G + 0.1140 * B

Visin Artificial, Instituto Tecnolgico Metropolitano

Carlos A. Madrigal

void cvtColor(InputArray src, OutputArray dst, int code, int dstCn=0)

Convierte una imagen de un espacio de color a otro. Los argumentos de esta funcin son:
src

Imagen de entrada de 8 bits, 16 bits o punto flotante

dst

Imagen destino de la misma resolucin en amplitud de src

code Tipo de conversin de color, el cual puede hacer conversiones entre espacios de

color: Gris, RGB, XYZ, YCrCb, HSV, Lab, Bayer. Para esto se utilizan los siguientes codigos de
conversin

CV_RGB2GRAY,

CV_GRAY2BGR,

CV_BGR2XYZ,

CV_XYZ2BGR,

CV_BGR2YCrCb, CV_YCrCb2BGR, CV_BGR2HSV, CV_HSV2BGR


dstCn Nmero de canales en la imagen dst; si este es 0, el nmero de canales es el de
src y code.

En 9, 10, 11 imshow permite visualizar las imagenes guardadas en las estructuras Imagen,
ImagenGris e imagenClonada.
En 12 se espera 10seg para de visualizacin de la imagen.
En 13 se espera que se presione una tecla para cerrar la ventana.
En 14 retorna un entero de la funcin main para salir.
Ejercicio #4
En este ejercicio se aplica el operador umbral sobre la imagen.

1. Mat imagen, ImagenUmbral;


2. namedWindow("Original",1);
3. namedWindow("Umbral",1);
4. imagen= imread("c:\\lena.jpg");
5. ImagenUmbral.create(imagen.rows, imagen.cols, CV_8UC1);
6. cvtColor(imagen, ImagenUmbral, CV_RGB2GRAY);
7. threshold(ImagenUmbral, ImagenUmbral,128,255,CV_THRESH_BINARY);
8. imshow("Original",imagen);
9. imshow("Umbral",ImagenUmbral);

Visin Artificial, Instituto Tecnolgico Metropolitano


10.

waitKey(10000);

11.

getchar();

12.

return 0;

Carlos A. Madrigal

En 7 threshold permite aplicar el operador umbral a la imagen con umbral de 128 y un valor

maximo de 255.

void Threshold(InputArray
maxval, int type)

src,

OutputArray

dst,

double

thresh,

double

Permite aplicar diferentes tipos de Operadores umbral a una imagen. Los argumentos de
esta funcin son:
src Imagen de entrada de 8 bits o 32 bits en punto flotante.
dst

Imagen destino, debe ser del mismo tipo de src.

thresh

Valor de Umbral

maxval
Valor mximo, se
THRESH_BINARY_INV.
type

usa cuando el argumento type es THRESH_BINARY,

Permite escoger el tipo de operador umbral de la siguiente forma:

type = THRESH_BINARY:

type = THRESH_BINARY_INV:

type = THRESH_TRUNC:

Visin Artificial, Instituto Tecnolgico Metropolitano

Carlos A. Madrigal

type = THRESH_TOZERO:

type = THRESH_TOZERO_INV:

Você também pode gostar