Ejercicio: 2Eva_IT2014_T3 Imagen RGB a gris
continuación del tema 2, solución propuesta en Python:
# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 2Eva_IT2014_T2 Función color RGB a gris
# propuesta: edelros@espol.edu.ec
import numpy as np
def convertirgris(RGB):
rojo = RGB[0]
verde = RGB[1]
azul = RGB[2]
# Mezcla colores
gris = 0.2989*rojo + 0.5870*verde + 0.1140*azul
gris = int(gris)
if (rojo>255 or verde>255 or azul>255):
gris = -1
# Tarea: verificar para colores <0
return(gris)
# 2Eva_IT2014_T3 Imagen RGB a gris
def fotoagris(imagen):
color,n,m = np.shape(imagen)
blanconegro = np.zeros(shape=(n,m),dtype=int)
# por cada pixel
fila = 0
while not(fila>=n):
columna = 0
while not(columna>=m):
rojo = imagen[0,fila,columna]
verde = imagen[1,fila,columna]
azul = imagen[2,fila,columna]
# para convertir
RGB = [rojo,verde,azul]
gris = convertirgris(RGB)
# poner el punto en gris
blanconegro[fila,columna] = gris
columna = columna + 1
fila = fila + 1
return(blanconegro)
Ejemplo de ejecución. Se proporciona la imagen como aun arreglo[color,fila,columna]
Puede copiar los valores de imagen y pegarlo en la linea de instruccion>>>
Luego invocar a la funcion fotoagris(imagen)
>>>imagen=np.array([[[12, 27, 42, 46, 74],
[ 3, 21, 33, 48, 67],
[ 5, 18, 0, 57, 73],
[ 6, 25, 31, 52, 69],
[13, 24, 40, 54, 64]],
[[13, 26, 40, 46, 66],
[15, 23, 45, 55, 62],
[ 3, 22, 0, 48, 70],
[ 6, 24, 39, 58, 68],
[ 8, 29, 35, 56, 72]],
[[ 5, 28, 37, 58, 64],
[ 7, 24, 34, 48, 75],
[ 9, 17, 0, 50, 62],
[12, 30, 43, 56, 68],
[ 4, 26, 45, 49, 74]]])
>>> fotoagris(imagen)
array([[11, 26, 40, 47, 68],
[10, 22, 40, 52, 64],
[ 4, 20, 0, 50, 69],
[ 6, 24, 37, 55, 68],
[ 9, 27, 37, 54, 69]])