Aplicar una máscara binaria en una imagen en Python
Si trabajas en Visión Artificial, muchas veces es necesario aplicar una segmentación en una imagen mediante una máscara binaria.
En un principio sólo necesitas las librerías de Numpy y Matplotlib de Python.
Aquí os dejo un script de ejemplo donde uso Scipy para cargar una máscara desde GNU Octave/MATLAB:
import numpy as np import scipy.io as sio # Permite cargar un fichero de GNU Octave/MATLAB from matplotlib import pyplot as plt image = plt.imread('entrada.png') bin_mask = sio.loadmat('mask.mat')['bin_mask'].astype('bool') mask = np.dstack((bin_mask, bin_mask, bin_mask)) image[~mask] = 0 plt.imsave('salida.png', image)
Creo que ésta es la manera más elegante de hacerlo. Si alguien conoce alguna alternativa más reducida o con menos módulos cargados estaré encantado de que la comparta.