dans un code j'ai besoin d'ouvrir une image NB, d'en récupéré le nombre de pixel en fonction de sa nuance de gris, et d'écrire les occurrences dans un fichier csv :
from PIL.Image import *
import csv
pixels_valor = [0 for i in range(256)]
print(pixels_valor)
picture_or = open("paneau_nb.png")
(l, h) = picture_or.size
for i in range (h):
for j in range (l):
pix = Image.getpixel(picture_or, (i, j))
pixels_valor[pix[0]] += 1
fichier = open("histo.csv", "w", newline="")
f = csv.writer(fichier)
f.writerow(["niveau_gris", "nb_pixels"])
le problème est que quand j'ouvre mon fichier csv, il y a une erreur qui me dit : with open('histo.csv', 'w', newline='') as csvfile:
TypeError: open() got an unexpected keyword argument 'newline'
je ne sais pas d'où est-ce que ca peut venir, la syntaxe m'a l'air bonne :/ I need help please
L'ouverture du fichier avec l'option newline n'est pas compatible avec l'écriture d'un fichier csv, il faudra faire comme ceci je pense,
with open("histo.csv", "wb") as f:
fwriter = csv.writer(f)
# ...
with open est mieux que open, il sécurise la fermeture du fichier après écriture, plus besoin d'utiliser close.
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Mais quand j'essaye ton code ça fait TypeError ...
>>> with open("test.csv", "wb") as f:
... writer = csv.writer(f)
... writer.writerow(["toto", "tata"])
...
Traceback (most recent call last):
File "<stdin>", line 3, in <module>
TypeError: a bytes-like object is required, not 'str'
Ton lien date, c'est probablement du python2.
- Edité par thelinekioubeur 21 janvier 2020 à 10:09:19
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
il me semble que le b dans wb signifie que tu veux écrire des bytes, si ce n'est pas le cas, tu dois bien utiliser 'w', si tu veux travailler avec des objects ou des bytes, tu dois les encoder, puis décoder à la récupération pour les lires.
merci pour vos réponses, j'ai essayé vos solutions et j'obtiens ceci :/
Traceback (most recent call last):
File "c:/Users/trist/Documents/cours/isn/aide lulu/colo.py", line 14, in <module>
with open("histo.csv", "w") as f:
File "C:\Users\trist\AppData\Local\Programs\Python\Python38-32\lib\site-packages\PIL\Image.py", line 2794, in open
raise ValueError("bad mode %r" % mode)
ValueError: bad mode 'w'
from PIL import Image
picture_or = Image.open("paneau_nb.png") # Image.open pour ouvrir l'image
...
with open("histo.csv", "w") as f: # open pour ouvrir le csv
...
Ok je vois, par contre j'obtiens cette erreur pour getpixel :/
File "c:/Users/trist/Documents/cours/isn/aide lulu/colo.py", line 11, in <module>
pix = getpixel(picture_or, (i, j))
NameError: name 'getpixel' is not defined
j'ai mis le mauvais code erreur, j'avais essayé sans parce que ça marchait pas :
File "c:/Users/trist/Documents/cours/isn/aide lulu/colo.py", line 11, in <module>
pix = Image.getpixel(picture_or, (i, j))
AttributeError: module 'PIL.Image' has no attribute 'getpixel'
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)