在Jupyter Notebooks中如何将本地文件夹的图像读取存入DataFrame
实现本地图像读取并存入DataFrame的完整方案
原有代码问题说明
- return语句后的
Image.fromarray代码永远不会执行,属于无效代码 - 导入了cv2但目标是用PIL读取图像,依赖导入不匹配
- 缺少pandas、PIL相关库的导入
- 没有将读取到的图像数据转换为DataFrame结构的逻辑
完整可运行实现
import os import pandas as pd import numpy as np from PIL import Image # 替换为你自己的文件夹路径 folder = '/Users/x/x/x/x' def load_images_to_df(folder): # 先存为字典列表,后续转DataFrame更高效 img_data_list = [] for filename in os.listdir(folder): # 过滤非图像文件,避免读取报错 if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif')): file_path = os.path.join(folder, filename) try: # 用PIL读取图像并转为numpy数组 img = Image.open(file_path) img_array = np.array(img) # 按需调整存入的字段 img_data_list.append({ '文件名': filename, '文件路径': file_path, '图像数组': img_array, '图像尺寸': img.size, '图像模式': img.mode }) except Exception as e: print(f"读取文件{filename}失败:{e}") # 转换为DataFrame返回 return pd.DataFrame(img_data_list) # 调用函数获取结果 image_df = load_images_to_df(folder) # 查看前5行验证结果 print(image_df.head())
补充说明
- 代码加入了图像后缀过滤和异常捕获逻辑,避免非图像文件、损坏图像导致整个流程中断
- DataFrame默认将numpy数组类型的图像数据存为object类型,符合后续使用需求
- 如果习惯用cv2读取图像,需要手动转换颜色通道,cv2默认读取为BGR格式,转换代码如下:
img = cv2.imread(file_path) img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
内容的提问来源于stack exchange,提问作者Pratham Rathi
相关产品推荐
相关产品推荐

