如何使用OpenImageR批量保存转换后的灰度图像
将RGB图像转为灰度图后批量保存的解决方案
问题描述
我正尝试将RGB图像转换为灰度图后保存,已经用OpenImageR包读取了/dat目录下的所有jpg图片并转为灰度图,但不知道如何修改writeImage函数完成保存操作。
原代码如下:
library(OpenImageR) path = list.files("/dat", ".jpg", full.names = T, all.files = TRUE) imgr = lapply(path, readImage) imgs = lapply(imgr, rgb_2gray) # 不知道如何修改的保存代码 writeImage(img.fi))
解决方案
你的代码已经完成了图像读取和灰度转换,问题出在writeImage的使用方式——它需要明确指定要保存的图像对象和目标路径,且因为是批量处理,需要一一对应每个灰度图和保存路径:
- (可选)创建专门的灰度图保存目录
避免和原图像混放,先创建一个新目录:
dir.create("/dat/gray_images", recursive = TRUE, showWarnings = FALSE)
- 生成每个灰度图的保存路径
从原图像路径中提取文件名,拼接成新的保存路径(比如在文件名前加gray_标识):
save_paths = file.path("/dat/gray_images", paste0("gray_", basename(path)))
- 批量保存灰度图
用mapply函数将灰度图列表和保存路径一一对应,调用writeImage完成保存:
mapply(writeImage, image = imgs, file_path = save_paths, quality = 100)
补充说明
writeImage的核心参数:image是要保存的图像对象,file_path是目标保存路径,quality用于设置JPG图像质量(取值0-100,默认75,数值越高质量越好)。- 如果不想新建目录,也可以直接在原目录保存,只需修改
save_paths为:
save_paths = file.path(dirname(path), paste0("gray_", basename(path)))
内容的提问来源于stack exchange,提问作者user20003920
相关产品推荐
相关产品推荐

