Ответ 1
У меня была такая же проблема.
from PIL import Image
вместо
import Image
исправлена проблема
Я запускаю Python 2.7 в Visual Studio 2013. Код ранее работал нормально, когда в Spyder, но когда я запускаю:
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')
Я получаю следующие ошибки:
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
Почему это так и как я могу это исправить?
Как я уже сказал, я использовал установщик Pillow для моего Python 2.7. Но странно, я заканчиваю тем, что:
>>> 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
Все сбой!
У меня была такая же проблема.
from PIL import Image
вместо
import Image
исправлена проблема
Итак, после долгой борьбы с этой проблемой, это поможет вам:
from PIL import Image
вместо
import Image
Кроме того, если ваш файл изображения не загружается, и вы получаете сообщение об ошибке "Нет файла или каталога", вы должны сделать следующее:
path=r'C:\ABC\Users\Pictures\image.jpg'
а затем откройте файл
image=Image.open(path)
во-первых, проверьте вашу версию подушки
python -c 'import PIL; print PIL.PILLOW_VERSION'
Я использую pip install --upgrade pillow
обновить версию с 2.7 до 2.9 (или 3.0), чтобы исправить это.
В моем случае.. У меня уже было "из PIL import Image" в моем коде.
Ошибка произошла для меня, потому что файл изображения все еще использовался (заблокирован) предыдущей операцией в моем коде. Мне пришлось добавить небольшую задержку или попытку открыть файл в режиме добавления в цикле, пока это не завершилось ошибкой. Как только это не сработало, это означало, что файл больше не использовался, и я мог продолжить и позволить PIL теперь открыть файл.
В моем случае файл изображения был только что записан и его нужно было очистить перед открытием, вот так:
img_file.flush()
img = Image.open(img_file.name))
Если вы используете Anaconda на окнах, вы можете открыть приложение Anaconda Navigator и перейти в раздел Среда и найти подушку в установленных библиотеках и отметьте его для обновления до последней версии, щелкнув правой кнопкой мыши на флажке.
Это устранило следующую ошибку:
PermissionError: [WinError 5] Access is denied: 'e:\\work\\anaconda\\lib\\site-packages\\pil\\_imaging.cp36-win_amd64.pyd'
Похоже, проблема с разрешениями. Я столкнулся с той же ошибкой. Но когда я запустил его из учетной записи root, это сработало. Так что либо дайте разрешение на чтение файла с помощью chmod (в linux), либо запустите ваш скрипт после входа в систему как пользователь root.
В моем случае это было потому, что используемые мной изображения были сохранены на Mac, который генерирует много скрытых файлов, таких как .image_file.png, поэтому они оказались даже не теми изображениями, которые мне нужны, и я мог спокойно проигнорировать предупреждение или удалить скрытые файлы. Это был просто недосмотр в моем случае.
В моем случае в папке была пустая картинка. После удаления пустого .jpg все заработало нормально.
Для любого, кто делает это в большем масштабе, вы также можете проверить, сколько файловых дескрипторов у вас есть. Она выдаст эту ошибку, если вы выбежали в плохой момент.