You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 01:00:04