如何解决使用 Scikit io 模块导入图像文件夹
我正在尝试使用 scikit 图像包学习图像处理。我知道我最终需要导入包含大量图像的文件夹。我首先单独指定每个文件的路径,这工作正常,我能够生成我希望的数组。
import numpy as np
import matplotlib as plt
from skimage import io
from skimage import viewer
fID1 = 'C:/Users/keand/Documents/STrader Lab/HJ pictures/PictureB.jpg'
fID2 = 'C:/Users/keand/Documents/STrader Lab/HJ pictures/PictureA.jpg'
root1 = io.imread(fID1)
root2 = io.imread(fID2)
然后我尝试使用 scikit 文档中的示例来加载文件夹。
>>> import os
>>> from natsort import natsorted,ns
>>> from skimage import io
>>> list_files = os.listdir('.')
>>> list_files
['01.png','010.png','0101.png','0190.png','02.png']
>>> list_files = natsorted(list_files)
>>> list_files
['01.png','02.png','0190.png']
>>> image_list = []
>>> for filename in list_files:
... image_list.append(io.imread(filename))
这是我的消遣:
import os
from natsort import natsorted,ns
from skimage import io
from skimage.io import imread
listFiles = os.listdir('C:/Users/keand/Documents/STrader Lab/HJ pictures')
# listFiles = os.listdir('./HJ pictures')
print(listFiles)
listFiles = natsorted(listFiles)
print(listFiles)
imageList = []
for filename in listFiles:
imageList.append(io.imread(filename))
当我运行它时,我得到以下信息:
runfile('C:/Users/keand/Documents/STrader Lab/ImageProcessing.py',wdir='C:/Users/keand/Documents/STrader Lab')
['PictureA.jpg','PictureB.jpg']
['PictureA.jpg','PictureB.jpg']
Traceback (most recent call last):
File "C:\Users\keand\Documents\STrader Lab\ImageProcessing.py",line 31,in <module>
imageList.append(io.imread(filename))
File "C:\Users\keand\anaconda3\lib\site-packages\skimage\io\_io.py",line 48,in imread
img = call_plugin('imread',fname,plugin=plugin,**plugin_args)
File "C:\Users\keand\anaconda3\lib\site-packages\skimage\io\manage_plugins.py",line 207,in call_plugin
return func(*args,**kwargs)
File "C:\Users\keand\anaconda3\lib\site-packages\skimage\io\_plugins\imageio_plugin.py",line 10,in imread
return np.asarray(imageio_imread(*args,**kwargs))
File "C:\Users\keand\anaconda3\lib\site-packages\imageio\core\functions.py",line 265,in imread
reader = read(uri,format,"i",**kwargs)
File "C:\Users\keand\anaconda3\lib\site-packages\imageio\core\functions.py",line 172,in get_reader
request = Request(uri,"r" + mode,**kwargs)
File "C:\Users\keand\anaconda3\lib\site-packages\imageio\core\request.py",line 124,in __init__
self._parse_uri(uri)
File "C:\Users\keand\anaconda3\lib\site-packages\imageio\core\request.py",line 260,in _parse_uri
raise FileNotFoundError("No such file: '%s'" % fn)
FileNotFoundError: No such file: 'C:\Users\keand\Documents\STrader Lab\PictureA.jpg'
有人可以帮我弄清楚为什么我在识别图像名称时收到 FileNoFoundError 吗?
以下是我尝试过的一些故障排除步骤。
解决方法
使用io模块的io.imread_collection函数要方便很多。这将创建一个存储为 nd 数组的图像集合。
from skimage.io import imread
from skimage.io import imread_collection
dirName = 'C:/Users/keand/Documents/Strader_Lab/Image_Processing/HJ_Pictures/*.jpg'
collection = imread_collection(dirName)
,
检查错误信息,您尝试加载的文件路径不存在。
图像不在您的工作目录中。您必须通过文件路径而不是文件名加载它们。
import os
scr = 'C:/Users/keand/Documents/Strader Lab/HJ pictures'
listFiles = [os.path.join(src,f) for f in os.listdir(src)]
print(listFiles)
我更喜欢使用 pathlib 库:
from pathlib import Path
scr = Path('C:/Users/keand/Documents/Strader Lab/HJ pictures')
listFiles = [f.resolve() for f in src.glob("*.jpg")]
print(listFiles)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。