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 FULL STACKTRACE + 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-identify-image-file-python) – Dilettant

答えて

1

OKAY!そう。私は、破損したイメージファイルを使用しているため、エラーが発生しているようです。

関連する問題