Image.OPEN () Kan beeldbestand niet identificeren – Python?

Ik loop Python 2.7 in Visual Studio 2013. De eerder werkte de eerder OK toen in Spyder, maar toen ik ren:

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')

Ik eindig met de volgende fouten:

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

Waarom is het zo en hoe kan ik het repareren?


Zoals gesuggereerd, heb ik het kusseninstaller gebruikt in mijn Python 2.7. Maar raar, ik eindig hiermee:

>>> 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

Alles mislukt!


Antwoord 1, autoriteit 100%

Ik had hetzelfde probleem.

from PIL import Image

in plaats van

import Image

het probleem opgelost


Antwoord 2, autoriteit 21%

Dus na geruime tijd met dit probleem te hebben geworsteld, kan dit je helpen:

from PIL import Image

in plaats van

import Image

Als uw afbeeldingsbestand niet wordt geladen en u de foutmelding “Geen bestand of map” krijgt, moet u dit doen:

path=r'C:\ABC\Users\Pictures\image.jpg'

en open vervolgens het bestand

image=Image.open(path)

Antwoord 3, autoriteit 12%

In mijn geval.. Ik had al “from PIL import Image” in mijn code.

De fout trad bij mij op omdat het afbeeldingsbestand nog in gebruik was (vergrendeld) door een eerdere bewerking in mijn code. Ik moest een kleine vertraging toevoegen of proberen om het bestand in de toevoegmodus in een lus te openen, totdat dat niet mislukte. Toen dat niet mislukte, betekende dit dat het bestand niet meer in gebruik was en kon ik doorgaan en PIL het bestand laten openen. Dit zijn de functies die ik heb gebruikt om te controleren of het bestand in gebruik is en te wachten tot het beschikbaar is.

def is_locked(filepath):
    locked = None
    file_object = None
    if os.path.exists(filepath):
        try:
            buffer_size = 8
            # Opening file in append mode and read the first 8 characters.
            file_object = open(filepath, 'a', buffer_size)
            if file_object:
                locked = False
        except IOError as message:
            locked = True
        finally:
            if file_object:
                file_object.close()
    return locked
def wait_for_file(filepath):
    wait_time = 1
    while is_locked(filepath):
        time.sleep(wait_time)

Antwoord 4, Autoriteit 11%

Controleer eerst uw kussenversie

python -c 'import PIL; print PIL.PILLOW_VERSION'

Ik gebruik pip install --upgrade pillowUpgrade de versie van 2.7 tot 2.9 (of 3.0) vastgesteld.


Antwoord 5, Autoriteit 3%

In mijn geval was het omdat de afbeeldingen die ik gebruikten op een Mac werden opgeslagen, wat veel verborgen bestanden op genereert, zoals .image_file.png, dus ze bleken niet eens de werkelijke beelden te zijn die ik nodig hadden en ik kon het veilig negeren waarschuwing of verwijder de verborgen bestanden. Het was slechts een toezicht in mijn geval.


Antwoord 6, Autoriteit 3%

Gewoon een notitie voor mensen met hetzelfde probleem als ik.
Ik gebruik OpenCV / CV2 om numpy-arrays in TIFFS te exporteren, maar ik had problemen met het openen van deze tiffs met Pill Open Image en had dezelfde fout als in de titel.
Het probleem bleek te zijn dat Pil Open Image geen TIFFS kon openen die is gemaakt door het exporteren van Numpy Float64-arrays. Toen ik het veranderde naar float32, kon Pil de TIFF opnieuw openen.


Antwoord 7, Autoriteit 2%

Als je Anaconda op Windows gebruikt, kun je de app Anaconda Navigatoropenen en naar het gedeelte Omgevinggaan en zoeken naar pillowin geïnstalleerde bibliotheken en markeer het voor een upgrade naar de nieuwste versie door met de rechtermuisknop op het selectievakje te klikken.

Screenshot ter referentie:

Dit heeft de volgende fout verholpen:

PermissionError: [WinError 5] Access is denied: 'e:\\work\\anaconda\\lib\\site-packages\\pil\\_imaging.cp36-win_amd64.pyd'

Antwoord 8, autoriteit 2%

Het lijkt op een machtigingsprobleem. Ik liep tegen dezelfde fout aan. Maar toen ik het vanaf het root-account uitvoerde, werkte het. Geef dus ofwel de leesmachtiging aan het bestand met behulp van chmod (in linux) of voer je script uit nadat je bent ingelogd als rootgebruiker.


Antwoord 9, autoriteit 2%

In mijn geval zat er een lege afbeelding in de map. Na het verwijderen van de lege .jpg’s werkte het normaal.


Antwoord 10, autoriteit 2%

Vaak is het omdat het afbeeldingsbestand niet is afgesloten door het laatste programma.

Het zou beter moeten zijn om te gebruiken

with Image.open(file_path) as img:
    #do something

Antwoord 11, autoriteit 2%

In mijn geval was de afbeelding beschadigd tijdens het downloaden (met behulp van wget met github-url)

  • Probeer met meerdere afbeeldingen uit verschillende bronnen.
    python

    van PIL-afbeelding importeren
    Afbeelding.open()


Antwoord 12

In mijn geval was er net naar het afbeeldingsbestand geschreven en moest het worden leeggemaakt voordat het werd geopend, zoals:

img_file.flush() 
img = Image.open(img_file.name))

Antwoord 13

Voor iedereen die het op grotere schaal haalt, moet je misschien ook controleren hoeveel bestandsdescriptors je hebt. Het zal deze foutmelding geven als je op een slecht moment op was.


Antwoord 14

Voor wie hier komt met de fout colab PIL UnidentifiedImageError: cannot identify image filein Google Colab, met een nieuwe PIL-versie, en geen van de vorige oplossingen werkt voor hem:

Herstart gewoon de omgeving, uw geïnstalleerde PIL-versie is waarschijnlijk verouderd.


Antwoord 15

Voor mij was het opgelost door de afbeeldingsgegevensset die ik gebruikte opnieuw te downloaden (in feite heb ik de kopie die ik lokaal had doorgestuurd met behulp van vs-code’s SFTP). Hier is de jupyter-notebook die ik heb gebruikt (in vscode) met zijn uitvoer:

from pathlib import Path
import PIL
import PIL.Image as PILI
#from PIL import Image
print(PIL.__version__)
img_path = Path('PATH_UR_DATASET/miniImagenet/train/n03998194/n0399819400000585.jpg')
print(img_path.exists())
img = PILI.open(img_path).convert('RGB')
print(img)

uitvoer:

7.0.0
True
<PIL.Image.Image image mode=RGB size=158x160 at 0x7F4AD0A1E050>

merk op dat openaltijd wordt geopend in de modus ren zelfs een vinkje heeft om een fout te genereren als die modus wordt gewijzigd.

Other episodes