0

이미지 모음을 여는 스크립트 (아래 참조)가 있습니다. 이 사실을 알기까지는 다소 시간이 걸렸지 만,이 스크립트는 이름에 밑줄이있는 이미지 파일을 열 수없는 것으로 나타났습니다. 다음과 같이 내 이미지 디렉토리의 예는 다음과 같습니다 "정상"이미지 파일 이름을 처리 할 때 예상대로Python 3.5 : 파일 이름에 밑줄이있는 이미지를여시겠습니까?

Images\img1.jpg

Images\img2.jpg

Images\img3_c.jpg

스크립트가 동작합니다. 다음과 같이 스크립트가 이름에 밑줄으로 파일을 열 때이 순간, 그것은 오류를 반환 :

OSError: cannot identify image file <_io.BufferedReader name='TrainingSets\\CottonWoolSpots\\0006_c.jpg'> 

나는 가능하면 내 파일 이름을 변경하는 것을 방지하고 싶습니다. 어떤 도움을 주셔서 감사합니다.

스크립트 :

import numpy as np 
from skimage import io 
import glob 
import os 

def importAllImgs():  
     imagePath = glob.glob("TrainingSets\CottonWoolSpots\*.jpg")  
     im_coll = io.ImageCollection(imagePath) 
     im_array = []   
     for i in range(len(im_coll)): 
      image = im_coll[i]   
      im_array.append(image)   
     return im_array 

if __name__ == "__main__": 
    testArray = importAllImgs() 

EDIT 전체 스택 트레이스 + ERROR :

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "C:\Users\biegad1\AppData\Local\Continuum\Anaconda3\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 734, in debugfile 
    debugger.run("runfile(%r, args=%r, wdir=%r)" % (filename, args, wdir)) 
    File "C:\Users\biegad1\AppData\Local\Continuum\Anaconda3\lib\bdb.py", line 431, in run 
    exec(cmd, globals, locals) 
    File "<string>", line 1, in <module> 
    File "C:\Users\biegad1\AppData\Local\Continuum\Anaconda3\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 714, in runfile 
    execfile(filename, namespace) 
    File "C:\Users\biegad1\AppData\Local\Continuum\Anaconda3\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 89, in execfile 
    exec(compile(f.read(), filename, 'exec'), namespace) 
    File "//mspm1bnas50s/home58/biegad1/python scripts/batchimportimgs_0_1.py", line 54, in <module> 
    testArray = importAllImgs() 
    File "//mspm1bnas50s/home58/biegad1/python scripts/batchimportimgs_0_1.py", line 36, in importAllImgs 
    image = im_coll[i]   
    File "C:\Users\biegad1\AppData\Local\Continuum\Anaconda3\lib\site-packages\skimage\io\collection.py", line 264, in __getitem__ 
    self.data[idx] = self.load_func(self.files[n], **kwargs) 
    File "C:\Users\biegad1\AppData\Local\Continuum\Anaconda3\lib\site-packages\skimage\io\_io.py", line 61, in imread 
    img = call_plugin('imread', fname, plugin=plugin, **plugin_args) 
    File "C:\Users\biegad1\AppData\Local\Continuum\Anaconda3\lib\site-packages\skimage\io\manage_plugins.py", line 211, in call_plugin 
    return func(*args, **kwargs) 
    File "C:\Users\biegad1\AppData\Local\Continuum\Anaconda3\lib\site-packages\skimage\io\_plugins\pil_plugin.py", line 36, in imread 
    im = Image.open(f) 
    File "C:\Users\biegad1\AppData\Local\Continuum\Anaconda3\lib\site-packages\PIL\Image.py", line 2309, in open 
    % (filename if filename else fp)) 
OSError: cannot identify image file <_io.BufferedReader name='TrainingSets\\CottonWoolSpots\\0006_c.jpg'> 
+1

전체 스택 추적을 추가 할 수 있습니까? 이 에러는'im_coll = io.ImageCollection (imagePath)'라인이나 어디에서 발생합니까? – Dilettant

+0

@Dilettant 오류는'image = im_coll [i]'줄에서 발생합니다. 콘솔에서'im_coll'을 가지고 놀면 언더 스코어가없는 파일에 대해'im_coll [i]'를 성공적으로 실행할 수 있지만 밑줄이 포함 된 파일에 대해서도 비슷한 오류가 발생합니다. 스택 추적을 포함하도록 내 질문을 편집하고 있습니다. – DeeWBee

+2

그것은 관련이 없거나 (단지 "영역"으로 숨겨져있을 수 있지만) [Image.open()은 이미지 파일 - Python을 식별 할 수 없습니까?] (http://stackoverflow.com/questions/19230991/)를 보지 못하게 할 수 있습니다. image-open-can not-identify-image-file-python) – Dilettant

답변

1

OKAY! 그래서. 내가 손상된 이미지 파일로 작업 한 것으로 보입니다. 따라서 오류가 발생했습니다.

관련 문제