In [12]:
import matplotlib.pyplot as plt
import matplotlib.image as image
import numpy as np
img = image.imread("img/banana.png")
img2 = np.zeros(img.shape)
for i in range(img.shape[0]):
for j in range(img.shape[1]):
if sum(img[i][j]) > 1.5:
img2[i][j] = np.array([1,1,1])
else:
img2[i][j] = np.array([0,0,0])
fig, axs = plt.subplots(1, 2)
axs[0].imshow(img)
axs[1].imshow(img2)
plt.show()
Vamos paso a paso, primero mostrar la imagen
In [4]:
import matplotlib.pyplot as plt
import matplotlib.image as image
import numpy as np
img = image.imread("img/banana.png")
plt.imshow(img)
plt.show()
Tenemo que tener en cuenta que el array que contiene la imagen es de 3 dimensiones.
- La primera es para las filas
- La segunta para las columnas
- La tercera es para guardar el valor del color
El color se guarda en el formato RGB y el valor va de 0.0 a 1.0
Entonces para considerar que se pintará un pixel en color blanco(1,1,1), comprobamos que la suma sea mayor a 1.5 y en caso contrario sera negro(0,0,0)
In [83]:
import matplotlib.pyplot as plt
import matplotlib.image as image
import numpy as np
img = image.imread("img/banana.png")
img2 = np.zeros(img.shape)
for i in range(img.shape[0]):
for j in range(img.shape[1]):
if sum(img[i][j]) > 1.5:
img2[i][j] = np.array([1,1,1])
else:
img2[i][j] = np.array([0,0,0])
fig, axs = plt.subplots(1, 2)
axs[0].imshow(img)
axs[1].imshow(img2)
plt.show()
Podemos variar el punto limite(umbral), y ver como se muestra la imagen. Para facilitar esto podemos crear una funcion que nos retorna la imagen procesada.
In [10]:
import matplotlib.pyplot as plt
import matplotlib.image as image
import numpy as np
def getImg(img, umbral):
img2 = np.zeros(img.shape)
for i in range(img.shape[0]):
for j in range(img.shape[1]):
if sum(img[i][j]) > umbral:
img2[i][j] = np.array([1,1,1])
else:
img2[i][j] = np.array([0,0,0])
return img2
img = image.imread("img/banana.png")
fig, axs = plt.subplots(1, 4)
axs[0].imshow(img)
axs[1].imshow(getImg(img,1.0))
axs[2].imshow(getImg(img,1.5))
axs[3].imshow(getImg(img,2.0))
plt.show()
No hay comentarios.:
Publicar un comentario