CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

python 3.5 : image rgb -> image en niveaux de gris

Skywear
Skywear
Niveau 46
30 décembre 2015 à 02:41:12

Salut, j'essaie d'écrire une fonction qui prend en entrée le nom d'un fichier image, qui convertit cette image en niveaux de gris puis qui donne la matrice correspondante à ces niveaux de gris (je sais pas si c'est clair)
Par exemple, je donne la première photo : http://img1.lesnumeriques.com/articles/1040/noir_blanc_canaux_RVB.jpg, et la fonction me renvoie la matrice des niveaux de gris de la deuxième photo (sur une échelle de 0 à 255 ou de 0 à 1)

j'ai essayé de faire un truc mais ça marche moyen :

import numpy as np
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
def image(n):
image=mpimg.imread(n)
plt.imshow(image,cmap=plt.cm.gray)
return image

:merci:

Arceau
Arceau
Niveau 7
30 décembre 2015 à 04:37:11

moi je ferais simplement (avec la lib Image) :

def image(n):
	gray = lambda c: sum(c) / len(c)
	img = Image.open(n)
	x, y = img.size
	return [[gray(img.getpixel((i, j))) for i in xrange(x)] for j in xrange(y)]

gray étant la fonction qui converti le triplet rgb en niveau de gris, ici c'est une bête moyenne arithmétique des trois composantes

Skywear
Skywear
Niveau 46
30 décembre 2015 à 17:09:59

merci pour vos réponses
j'ai l'impresssion que ça a l'air de marcher :
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
def image(n):
img = mpimg.imread(n)
gray = np.dot(img[...,:3], [0.299, 0.587, 0.114])
return gray

arceau j'ai du mal à comprendre cette ligne : "gray = lambda c: sum(c) / len(c)"

Arceau
Arceau
Niveau 7
30 décembre 2015 à 17:43:56

lambda c'est ce qu'on appelle une fonction anonyme, avec je définis ma fonction gray plus rapidement
ça remplace ça si tu préfères :

def gray(c):
	return sum(c) / len(c)
Sous forums
  • Cours et Devoirs
  • Histoire
  • Métiers & Orientation
  • Environnement & Nature
  • Politique
  • Philosophie
La vidéo du moment