如何批量将灰度图像转换为对应像素灰度值的Excel/CSV文件?
解决方案:将灰度人脸图像批量转换为200×200像素CSV文件
一、简便工具推荐
- ImageMagick:免费命令行工具,适合批量处理。单张图像转换命令:
批量处理可写简单脚本(Windows批处理/Shell脚本)遍历所有图像文件,自动生成对应CSV。convert input.png -depth 8 -compress none txt:- | grep -v "^#" | cut -d, -f2- | tr ' ' ',' > output.csv - IrfanView:适合少量文件,通过「图像→信息→像素值」复制数据后粘贴到Excel再保存为CSV,但批量效率低。
二、R语言实现
使用imager包完成批量处理:
- 安装并加载依赖:
install.packages("imager") library(imager) - 批量处理脚本:
# 设置图像文件夹路径 img_dir <- "path/to/your/images" # 获取目标格式图像文件(示例为png,可根据实际修改) img_files <- list.files(img_dir, pattern = "\\.png$", full.names = TRUE) for (file in img_files) { # 读取并转为灰度图像 img <- load.image(file) %>% grayscale() # 转为200×200矩阵 img_mat <- as.matrix(img) # 生成对应CSV文件名 output_file <- gsub("\\.png$", ".csv", file) # 写入CSV,不带行列名 write.csv(img_mat, output_file, row.names = FALSE, col.names = FALSE) }
三、Visual Studio Code(Python脚本实现)
借助Python的Pillow库完成,步骤如下:
- 安装依赖:
pip install pillow - 批量处理脚本:
from PIL import Image import os # 图像文件夹路径 img_dir = "path/to/your/images" # 获取所有支持格式的图像文件 img_files = [f for f in os.listdir(img_dir) if f.endswith(('.png', '.jpg', '.jpeg'))] for filename in img_files: img_path = os.path.join(img_dir, filename) with Image.open(img_path).convert('L') as img: # 检查图像尺寸是否符合要求 if img.size != (200, 200): print(f"Skipping {filename}: incorrect size") continue # 提取像素矩阵 pixel_data = list(img.getdata()) pixel_matrix = [pixel_data[i:i+200] for i in range(0, len(pixel_data), 200)] # 生成输出文件路径 output_path = os.path.join(img_dir, os.path.splitext(filename)[0] + '.csv') # 写入CSV with open(output_path, 'w') as f: for row in pixel_matrix: f.write(','.join(map(str, row)) + '\n')
内容的提问来源于stack exchange,提问作者Santie Mckenzie
相关产品推荐
相关产品推荐

