如何将文件夹内所有图片数据通过cv2处理后批量导出为CSV文件
批量图片转存CSV实现方案
前置依赖
你需要提前安装好opencv-python、pandas、numpy三个库,导入对应模块即可实现批量操作。
操作逻辑
- 遍历指定文件夹下所有jpg后缀的图片文件,过滤其他非目标文件
- 逐个读取图片,按需调整格式(转灰度、BGR转RGB等)后拉平为一维像素数组
- 按需求写入CSV:支持每张图片单独存一个CSV,或所有图片统一存入同一个CSV
可运行代码示例
import cv2 import os import pandas as pd import numpy as np # 替换为你自己的图片存储文件夹路径 IMG_FOLDER_PATH = "Output_Images" # 存储所有图片数据的列表,用于所有图片存同一个CSV的场景 total_img_data = [] for file_name in os.listdir(IMG_FOLDER_PATH): # 只处理jpg格式的图片,适配你当前的文件命名规则 if not file_name.endswith(".jpg"): continue # 拼接完整图片路径 full_img_path = os.path.join(IMG_FOLDER_PATH, file_name) # 读取图片,若需要读灰度图可加参数 cv2.IMREAD_GRAYSCALE img = cv2.imread(full_img_path) # 可选操作:cv2默认读取为BGR格式,需要转RGB可打开下面注释 # img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # 三维图片数组拉平为一维像素序列 flatten_pixel = img.flatten() # 场景1:每张图片单独存为一个CSV,打开下面注释即可 # csv_name = file_name.replace(".jpg", ".csv") # pd.DataFrame(flatten_pixel).to_csv(csv_name, index=False, header=False) # 场景2:所有图片存入同一个CSV,第一列记录原图片文件名 total_img_data.append([file_name] + flatten_pixel.tolist()) # 场景2的统一写入逻辑 if total_img_data: # 生成列名:第一列为图片文件名,后续每列对应一个像素值 col_list = ["img_filename"] + [f"pixel_{i}" for i in range(len(total_img_data[0])-1)] pd.DataFrame(total_img_data, columns=col_list).to_csv("all_images_result.csv", index=False)
注意事项
高分辨率图片拉平后列数较多,生成的CSV体积会远大于原图片总大小,若没有强制CSV要求,更推荐用npy格式存储图片数组
如果需要减少数据量,可以在读图时转灰度图,或提前对图片做缩放处理后再写入CSV
内容的提问来源于stack exchange,提问作者Ashur Ragna
相关产品推荐
相关产品推荐

