Sei sulla pagina 1di 5

PROGRAMA DE INGENIERÍA DE SISTEMAS

Guía de laboratorio 1: Pasos iniciales de manejo de imágenes

ASIGNATURA: Inteligencia Artificial


NOMBRE DEL PROFESOR: Paola Andrea Sánchez
LUGAR: Lab 101

OBJETIVOS DEL LABORATORIO:


 Conocer como leer, mostrar y guardar imágenes como pasos iniciales en el manejo de
imágenes, a través del uso de las funciones: cv2.imread(), cv2.imshow() ,cv2.imwrite(), y
realizar operaciones básicas de transformación.

COMPETENCIAS A DESARROLLAR: Aplicar correctamente las técnicas de procesamiento de


imágenes usando Python y Opencv.

RECURSOS A UTILIZAR: Python, OpenCv, Numpy.

PROCEDIMIENTO:

1. Leer una imagen

Use la función cv2.imread() para leer una imagen. La imagen debe estar alojada en el directorio de
trabajo o debe indicarse la ruta complete de acceso.

 cv2.imread : carga la imagen en el color original.

Nota: Si se quiere cargar la imagen en escala de grises se debe incluir el entero 0 tras el nombre.

import numpy as np
import cv2

# cargar la imagen IA en color


img = cv2.imread('IA.jpg')

# cargar la imagen IA en escala de grises


img2 = cv2.imread('IA.jpg', 0)

# otra forma de cargar la imagen IA en escala de grises


img3 = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

2. Desplegar (mostrar) una imagen

Use la función cv2.imshow() para mostrar la imagen leída en una ventana. La ventana se ajusta
automáticamente al tamaño de la imagen.

El primer argumento es de tipo string y corresponde con el nombre de la ventana; el segundo


argumento es la imagen.

cv2.imshow('image', img)
cv2.imshow('image_gray', img2)

cv2.waitKey(0)
cv2.destroyAllWindows()

cv2.waitKey() es una función de respuesta por teclado, cuyo argumento es el tiempo en


milisegundos. La función espera un tiempo para ejecutar un evento del teclado. Si se presiona
cualquier teclado en ese tiempo el programa continúa. Cuando el argumento es 0, se espera
indefinidamente una orden del teclado. Puede configurarse para detectar órdenes de teclas
especiales, letras, números o combinación de teclas.

cv2.destroyAllWindows(), simplemente, destruye todas las ventanas creadas. Puede utilizar la


función cv2.destroyWindow(), cuyo argumento es el nombre de la ventana, para destruir una
ventana en específico.

3. Guardar una imagen

Use la función cv2.imwrite() para guardar o salvar una imagen. El primer argumento es el nombre
del archive, y el Segundo es el nombre de la imagen que se desea guardar.

cv2.imwrite('IAgray.png',img)

Si no se dan especificaciones adicionales, la imagen será guardada en formato PNG en el directorio


de trabajo actual.

4. Operaciones con imágenes

Suma
Existen dos formas básicas de sumar o agregar pixeles imágenes: la primera es haciendo uso de la
función cv2.add(), cuyos argumentos son el nombre de la imagen y el escalar o imagen a sumar; la
segunda es simplemente usando el operador suma de Numpy, esto es, img1 + escalar o img1 +
img2. Tenga en cuenta que para sumar imágenes ambas deben tener las mismas dimensiones y
tipo. La suma de un escalar agrega brillo a la imagen.

Nota: Existe una diferencia entre los dos métodos de adición, cv2.add es una operación saturada
mientras que la suma Numpy es una operación modular. La función de Opencv presenta mejores
resultados.

*** Cargue previamente las imágenes a sumar img1, img2


# Sumando un escalar a una imagen – suma pixel a pixel
Sum1 = cv2.add(img, 20)
Sum2 = img + 20

# Sumando dos imagenes


Sum3 = cv2.add(img1, img2)
Sum4 = img1 + img2
Resta
Al igual que la suma la resta se realiza de dos formas: haciendo uso de la función cv2.subtract(),
cuyos argumentos son el nombre de la imagen y el escalar o imagen a restar; la segunda es
simplemente usando el operador resta. La resta de un escalar quita brillo a la imagen.

*** Cargue previamente las imágenes a restar img1, img2


# Restando un escalar a una imagen – resta pixel a pixel
Res1 = cv2.subtract(img, 20)
Res2 = img - 20

# Restando dos imagenes


Res3 = cv2.subtract(img1, img2)
Res4 = img1 - img2

Fusión de imágenes
Es también una suma de imágenes, pero ponderada (con pesos) lo cual da una sensación de
mezcla o transparencia; se usa la función cv2.addWeighted() donde se especifican las imágenes a
sumar y los pesos o ponderaciones de cada una.

# Sumando ponderada de imagenes


Sum = cv2.addWeighted(img1,0.7,img2,0.3,0)

Mezcla de operaciones
Las operaciones vistas pueden, igualmente, combinarse para producir cambios en las imágenes.

# Mezcla de operaciones sobre la misma imagen


sum_image = (0.3*img + 0.1*img)*3
invert_image = ~img
rest_image = sum_image - invert_image

5. Jugando a Buscar las diferencias entre dos imágenes


“Encontrar las diferencias” en un par de las mismas imágenes es uno de los juegos de
entretenimiento más populares del mundo. Esto no solo es apasionante, sino que también es
beneficioso. Un estudio sobre la corteza cerebral, la que trabaja mientras buscamos patrones
distintos, mostró que esta actividad desarrolla la concentración. Sin embargo, el desarrollo de
sistemas que encuentren diferencias entre imágenes va más allá de un juego, haciendo parte,
incluso, de sistemas de vigilancia y control de intrusos.

Una forma fácil de hacerlo es usando la función cv2.absdiff(), que a diferencia de la resta con
subtract o con el operador resta, calcula el valor absoluto de las diferencias. Mientras que las
primeras formas calculan la diferencia entre los valores y al ser negativos los convierte en cero, la
segunda calcula las diferencias absolutas, lo que permite mejores resultados.

# Restando dos imagenes


Res5 = cv2.absdiff(img1, img2)

Haz la prueba con los siguientes juegos de imágenes:


BIBLIOGRAFÍA:

 http://docs.opencv.org/3.0-beta/doc/py_tutorials/py_tutorials.html

Potrebbero piacerti anche