Menú principal

miércoles, 10 de febrero de 2021

Representar imágenes con filtro de color - Python

En primer lugar se deberán importar las bibliotecas cv2 y matplotlib.pyplot. Posteriormente se lee la imagen con la que trabajaremos y utilizaremos el método split() para dividirla en tres canales: B, G, R (openCV los toma en ese orden, tal y como hemos explicado en post anteriores). 
import cv2
import matplotlib.pyplot as plt

img_color = cv2.imread('parchis.jpg')
B, G, R=cv2.split(img_color)
Una vez que tenemos los canales separados, formaremos unas imágenes que darán la sensación de que hay un filtro de color. En el caso del filtro azul, utilizaremos el método merge() para mezclar los canales, pero dicha imagen solo tendrá componente del canal azul, haciendo así las otras componentes cero. Análogamente generaremos el filtro verde y rojo.
azul = cv2.merge([R*0, G*0, B])
verde = cv2.merge([R*0, G, B*0])
rojo = cv2.merge([R, G*0, B*0])
Finalmente, visualizamos la imagen RGB y las otras tres generadas en el plot.
plt.subplot(1,4,1), plt.imshow(cv2.merge([R,G,B]))
plt.title('RGB')
plt.axis(False)

plt.subplot(1,4,2), plt.imshow(azul)
plt.title('Azul')
plt.axis(False)

plt.subplot(1,4,3), plt.imshow(verde)
plt.title('Verde')
plt.axis(False)

plt.subplot(1,4,4), plt.imshow(rojo)
plt.title('Rojo')
plt.axis(False)
Código completo:
import cv2
import matplotlib.pyplot as plt

img_color = cv2.imread('parchis.jpg')

#Dividimos los 3 canales
B, G, R=cv2.split(img_color)

azul = cv2.merge([R*0, G*0, B])
verde = cv2.merge([R*0, G, B*0])
rojo = cv2.merge([R, G*0, B*0])

plt.subplot(1,4,1), plt.imshow(cv2.merge([R,G,B]))
plt.title('RGB')
plt.axis(False)

plt.subplot(1,4,2), plt.imshow(azul)
plt.title('Azul')
plt.axis(False)

plt.subplot(1,4,3), plt.imshow(verde)
plt.title('Verde')
plt.axis(False)

plt.subplot(1,4,4), plt.imshow(rojo)
plt.title('Rojo')
plt.axis(False)
Resultado obtenido:



No hay comentarios:

Publicar un comentario