J'exécute Python 2.7 dans Visual Studio 2013. Le code fonctionnait auparavant correctement dans Spyder, mais lors de l'exécution:
import numpy as np
import scipy as sp
import math as mt
import matplotlib.pyplot as plt
import Image
import random
# (0, 1) is N
SCALE = 2.2666 # the scale is chosen to be 1 m = 2.266666666 pixels
MIN_LENGTH = 150 # pixels
PROJECT_PATH = 'C:\\cimtrack_v1'
im = Image.open(PROJECT_PATH + '\\ST.jpg')
Je me retrouve avec les erreurs suivantes:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\cimtrack_v1\PythonApplication1\dr\trajgen.py", line 19, in <module>
im = Image.open(PROJECT_PATH + '\\ST.jpg')
File "C:\Python27\lib\site-packages\PIL\Image.py", line 2020, in open
raise IOError("cannot identify image file")
IOError: cannot identify image file
Pourquoi est-ce vrai et comment puis-je le réparer?
Comme suggéré, j'ai utilisé le programme d'installation de Pillow pour mon Python 2.7. Mais bizarrement, je me retrouve avec ceci:
>>> from PIL import Image
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named PIL
>>> from pil import Image
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named pil
>>> import PIL.Image
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named PIL.Image
>>> import PIL
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named PIL
Tous échouent!
J'ai eu le même problème.
from PIL import Image
au lieu de
import Image
corrigé le problème
Donc, après avoir lutté avec ce problème pendant un certain temps, voici ce qui pourrait vous aider:
from PIL import Image
au lieu de
import Image
De plus, si votre fichier image ne se charge pas et que vous obtenez une erreur "Aucun fichier ou répertoire", procédez comme suit:
path=r'C:\ABC\Users\Pictures\image.jpg'
puis ouvrez le fichier
image=Image.open(path)
d'abord, vérifiez la version de votre oreiller
python -c 'import PIL; print PIL.PILLOW_VERSION'
J'utilise pip install --upgrade pillow
mettre à niveau la version de 2.7 à 2.9 (ou 3.0) corrige ce problème.
Dans mon cas .. j'avais déjà "de PIL import Image" dans mon code.
L'erreur s'est produite pour moi car le fichier image était toujours en cours d'utilisation (verrouillé) par une opération précédente de mon code. J'ai dû ajouter un petit délai ou tenter d'ouvrir le fichier en mode ajout dans une boucle, jusqu'à ce que cela n'échoue pas. Une fois que cela n’avait pas échoué, cela signifiait que le fichier n’était plus utilisé, je pouvais continuer et laisser PIL l’ouvrir maintenant.
Dans mon cas, le fichier image venait juste d'être écrit et devait être vidé avant ouverture, comme suit:
img_file.flush()
img = Image.open(img_file.name))
Cela ressemble à un problème d'autorisations. Je faisais face à la même erreur. Mais quand je l'ai lancé à partir du compte root, cela a fonctionné. Donc, accordez l’autorisation de lecture au fichier en utilisant chmod (sous Linux) ou exécutez votre script après vous être connecté en tant qu’utilisateur root.
Si vous utilisez Anaconda sur Windows, vous pouvez ouvrir l'application Anaconda Navigator et accéder à Environnement section et recherchez pillow dans les bibliothèques installées et marquez-le pour la mise à niveau vers la dernière version en cliquant avec le bouton droit de la souris sur la case à cocher.
Capture d'écran pour référence:
Cela a corrigé l'erreur suivante:
PermissionError: [WinError 5] Access is denied: 'e:\\work\\anaconda\\lib\\site-packages\\pil\\_imaging.cp36-win_AMD64.pyd'
Dans mon cas, c’était parce que les images que j’utilisais étaient stockées sur un Mac, ce qui générait de nombreux fichiers cachés comme .image_file.png, de sorte qu’ils ne correspondaient même pas aux images dont j’avais besoin et que je pouvais ignorer cet avertissement ou le supprimer en toute sécurité. les fichiers cachés. C'était juste un oubli dans mon cas.
Dans mon cas, il y avait une image vide dans le dossier. Après avoir supprimé les fichiers .jpg vides, cela fonctionnait normalement.