【问题标题】:Python 3.5: Open an image with underscore in file name?Python 3.5:打开文件名中带有下划线的图像?
【发布时间】:2016-07-07 16:52:36
【问题描述】:

我有一个打开图像集合的脚本(见下文)。我花了一段时间才弄清楚这一点,但我意识到该脚本似乎无法打开任何名称中带有下划线的图像文件。我的图片目录示例如下:

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

编辑完整的堆栈跟踪 + 错误:

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

【问题讨论】:

  • 也许添加完整的堆栈跟踪?这个错误是发生在im_coll = io.ImageCollection(imagePath) 行还是在哪里?
  • @Dilettant 错误将出现在image = im_coll[i] 行。当我在控制台中使用im_coll 时,我可以为任何没有下划线的文件成功执行im_coll[i],但对于任何包含下划线的文件都会收到类似的错误。我正在编辑我的问题以包含堆栈跟踪。
  • 它可能不相关(或者只是隐藏在 skimage “球体”中),但可以帮助浏览 Image.open() cannot identify image file - Python?
  • @Dilettant 啊我已经看过那个帖子了,没有任何结果。不过谢谢!

标签: python python-3.x python-imaging-library python-import scikit-image


【解决方案1】:

好的!所以。看来我一直在处理损坏的图像文件,因此出现了错误。

【讨论】:

    猜你喜欢
    • 2014-04-29
    • 2012-04-15
    • 1970-01-01
    • 1970-01-01
    • 2018-01-28
    • 1970-01-01
    • 2014-10-23
    • 2016-12-03
    • 2014-12-13
    相关资源
    最近更新 更多