imread_集合没有项目

2024-04-19 15:07:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用skimage.io.imread_collection从存档中读取多个图像,但由于某些原因,它抛出了一个错误:

"There is no item named '00071198d059ba7f5914a526d124d28e6d010c92466da21d4a04cd5413362552/masks/*.png' in the archive".

我检查了几次,这样的目录存在于archive中,并且使用*.png我只指定我希望在我的收藏中有所有的图像,imread_collection效果很好,当我试图下载图片时,不是从存档,而是从提取的文件夹。在

#specify folder name
each_img_idx = '00071198d059ba7f5914a526d124d28e6d010c92466da21d4a04cd5413362552'

with zipfile.ZipFile('stage1_train.zip') as archive:
    mask_ = skimage.io.imread_collection(archive.open(str(each_img_idx) + '/masks/*.png')).concatenate() 

有人能解释一下吗,发生了什么事?在


Tags: io图像imgpng错误原因collectionthere
1条回答
网友
1楼 · 发布于 2024-04-19 15:07:30

不是所有的scikit图像插件都支持从字节读取,所以我建议使用imageio。您还必须告诉ImageCollection如何访问归档文件中的图像,这是使用自定义的load_func

from skimage import io
import imageio

archive = zipfile.ZipFile('foo.zip')
images = [f.filename for f in zf.filelist]

def zip_imread(fn):
    return imageio.imread(archive.read(fn))

ic = io.ImageCollection(images, load_func=zip_imread)

ImageCollection有一些优点,比如不会同时将所有图像加载到内存中。但是,如果您只需要一长串NumPy数组的列表,您可以:

^{pr2}$

相关问题 更多 >