J'essaie d'utiliser matplotlib
pour lire une image RVB et la convertir en niveaux de gris.
Dans matlab, j'utilise ceci :
img = rgb2gray(imread('image.png'));
Dans le cadre de la matplotlib tutorial ils ne le couvrent pas. Ils se contentent de lire dans l'image
import matplotlib.image as mpimg
img = mpimg.imread('image.png')
puis ils découpent le tableau, mais ce n'est pas la même chose que de convertir RVB en niveaux de gris, d'après ce que j'ai compris.
lum_img = img[:,:,0]
J'ai du mal à croire que numpy ou matplotlib n'aient pas une fonction intégrée pour convertir de rgb en gray. N'est-ce pas une opération courante dans le traitement des images ?
J'ai écrit une fonction très simple qui fonctionne avec l'image importée à l'aide de imread
en 5 minutes. C'est terriblement inefficace, mais c'est pourquoi j'espérais une mise en œuvre professionnelle intégrée.
Sebastian a amélioré mon fonctionnement, mais j'espère toujours trouver l'appareil intégré.
l'implémentation de matlab (NTSC/PAL) :
import numpy as np
def rgb2gray(rgb):
r, g, b = rgb[:,:,0], rgb[:,:,1], rgb[:,:,2]
gray = 0.2989 * r + 0.5870 * g + 0.1140 * b
return gray