Resumen Capitulo 2: OpenCV 3.x with Python
Enviado por jacax • 22 de Abril de 2022 • Resumen • 830 Palabras (4 Páginas) • 217 Visitas
Introducción.
Este capitulo va a tratar de aplicar efectos visuales a las imágenes que queramos, desde detección de bordes que la imagen tenga, hasta filtros sencillos a la imagen como resaltar varios aspectos específicos de la imagen o darle énfasis a una determinada zona de la imagen.
Desarrollo.
# Andoni Cardenas Alonso 18310437
# Blurring
import cv2
import numpy as np
img = cv2.imread('images/c83ce45.png')
filas, columnas = img.shape[:2]
identidad_kernel = np.array([[0, 0, 0], [0, 1, 0], [0, 0, 0]])
kernel_3x3 = np.ones((3, 3), np.float32) / 9.0 # Divide by 9 to normalize the kernel
kernel_5x5 = np.ones((5, 5), np.float32) / 25.0 # Divide by 25 to normalize the kernel
cv2.imshow('Original', img)
output = cv2.filter2D(img, -1, identidad_kernel) # (imagen a editar, para mantener la profundidad de la imagen original
cv2.imshow('Indentidad de kernel', output) # operacion a realizar)
output = cv2.filter2D(img, -1, kernel_3x3)
cv2.imshow('Filtro 3x3', output)
output = cv2.filter2D(img, -1, kernel_5x5) # Entre mayor sea la identidad de kerner
cv2.imshow('Filtro 5x5', output) # mas efecto blur obtienen las imágenes
cv2.waitKey(0)
output = cv2.blur(img, (3,3)) # Para no escribir las identidades kernel individualmente tenemos esta funcion
cv2.imshow('Filtro 3x3 con funcion', output)
cv2.waitKey(0)
cv2.destroyAllWindows()
# Motion blur (como si tomaramos la imagen en movimiento)
img = cv2.imread('images/c83ce45.png')
cv2.imshow('Original', img)
tam = 15
kernel_motion_blur = np.zeros((tam, tam)) # Generar el Kernel
kernel_motion_blur[int((tam-1)/2), :] = np.ones(tam)
kernel_motion_blur = kernel_motion_blur / tam
output = cv2.filter2D(img, -1, kernel_motion_blur) # Aplicando el kernel a la imagen de entrada
cv2.imshow('Motion Blur', output)
cv2.waitKey()
cv2.destroyAllWindows()
# Sharpening ("Afilar" la imagen)
img = cv2.imread('images/c83ce45.png')
cv2.imshow('Original', img)
kernel_sharpen_normal = np.array([[-1,-1,-1], [-1,9,-1], [-1,-1,-1]]) # generamos los kernels
kernel_sharpen_agresivo = np.array([[1,1,1], [1,-7,1], [1,1,1]])
kernel_sharpen_3 = np.array([[-1,-1,-1,-1,-1],[-1,2,2,2,-1],[-1,2,8,2,-1],[-1,2,2,2,-1],[-1,-1,-1,-1,-1]]) / 8.0
output_1 = cv2.filter2D(img, -1, kernel_sharpen_normal) # aplicamos los kernels a la imagen de entrada
output_2 = cv2.filter2D(img, -1, kernel_sharpen_agresivo)
output_3 = cv2.filter2D(img, -1, kernel_sharpen_3)
cv2.imshow('Sharpening', output_1)
cv2.imshow('Sharpening Agresivo', output_2)
cv2.imshow('Realce de bordes', output_3)
cv2.waitKey()
cv2.destroyAllWindows()
# Embosing (Alzar la imagen)
realce_entrada = cv2.imread('images/c83ce45.png')
kernel_realce_1= np.array([[0, -1, -1], [1, 0, -1], [1, 1, 0]]) # Generamos los kernels
kernel_realce_2 = np.array([[-1, -1, 0], [-1, 0, 1], [0, 1, 1]])
kernel_realce_3 = np.array([[1, 0, 0], [0, 0, 0], [0, 0, -1]])
realce_gris = cv2.cvtColor(realce_entrada,cv2.COLOR_BGR2GRAY) # se convierte la imagen de entrada a escala de grises
# applying the kernels to the grayscale image and adding the offset to produce the shadow
output_1 = cv2.filter2D(realce_gris, -1, kernel_realce_1) + 128
output_2 = cv2.filter2D(realce_gris, -1, kernel_realce_2) + 128
output_3 = cv2.filter2D(realce_gris, -1, kernel_realce_3) + 128
cv2.imshow('Entrada', realce_entrada)
cv2.imshow('Realzado - Suroueste', output_1)
cv2.imshow('Realzado - Sureste', output_2)
cv2.imshow('Realzado - Noroeste', output_3)
cv2.waitKey()
cv2.destroyAllWindows()
# Edge detection (analizis de bordes)
img = cv2.imread('images/c83ce45.png', cv2.IMREAD_GRAYSCALE)
filas, columnas = img.shape
lineas_horizontales = cv2.Sobel(img, cv2.CV_64F, 1, 0, ksize=5) # profundidad cv2.CV_64F. Filtro sobel
lineas_verticales
...