如何用imageio的mimread读取同一目录下的多张图片?
问题解析
首先明确:imageio.mimread()并不适用于读取目录下的多个独立图片文件——它的核心用途是读取单个包含多帧的媒体文件(比如动画GIF、多页TIFF、MP4视频等)。你直接传入目录路径时,它会尝试把目录当作一个合法的媒体文件解析,自然会抛出RuntimeError。
正确解决方案
要读取目录下的多个JPG图片,你可以通过以下两种方式实现:
方案1:手动遍历并读取(最直观可靠)
用glob模块匹配目录下的所有JPG文件,按文件名排序后逐个读取:
import imageio import glob # 替换为你的test目录路径,匹配所有jpg文件并按名称排序 image_paths = sorted(glob.glob("/path/to/test/*.jpg")) # 批量读取图片到列表中 image_sequence = [imageio.imread(img_path) for img_path in image_paths]
这样得到的image_sequence就是包含两张图片数组的列表,和你期望mimread返回的格式一致。
方案2:利用imageio的序列读取器(更贴近多帧API风格)
如果你想使用更接近mimread的写法,可以用imageio.get_reader并指定序列格式:
import imageio # 传入目录路径+通配符,指定格式为"jpg" reader = imageio.get_reader("/path/to/test/*.jpg", format="jpg") image_sequence = list(reader)
这个方式本质也是遍历目录下的图片,但封装成了读取器接口,适合习惯使用imageio媒体读取API的场景。
补充说明
两种方案都能保证按文件名顺序读取图片(sorted和序列读取器都会默认按文件名排序),如果你的图片命名是0.jpg、1.jpg这种有序命名,完全可以保证读取顺序正确。
内容的提问来源于stack exchange,提问作者jjjjjj
相关产品推荐
相关产品推荐

