如何解决‘RGB_image参数必须为三维数组’的报错问题
问题原因
你当前的comb数组维度是480×640×18,这是因为将6张RGB图像(每张含3个颜色通道)的通道全部堆叠到第三维导致的。而rgb_2gray函数要求输入的是单张RGB图像(3维:高度×宽度×3),或者批量处理时需为4维数组(高度×宽度×3×图像数量),当前数组结构不符合函数要求,因此报错。
解决方案
方案一:先单张转灰度再合并(推荐)
直接在读取图像后逐个转换为灰度图,再合并成统一数组,步骤更简洁:
library(abind) library(openImageR) # 加载数据路径 path = list.files("../df",".jpg", full.names = T) # 读取图像并逐个转灰度 gray_imgs <- lapply(path, function(img_path) { rgb_img <- readImage(img_path) rgb_2gray(rgb_img) }) # 合并为灰度图数组(维度:480×640×6) comb_gray <- do.call(abind, c(gray_imgs, list(along = 3)))
方案二:调整现有数组维度后批量处理
如果已经生成了comb数组,可通过调整维度将其拆分为4维结构(高度×宽度×通道数×图像数),再循环处理每张图像:
# 调整comb的维度:将第三维的18拆分为3个通道 + 6张图像 dim(comb) <- c(480, 640, 3, 6) # 创建空数组存储灰度图 comb_gray <- array(dim = c(480, 640, 6)) # 循环处理每张RGB图转灰度 for (i in 1:6) { comb_gray[,,i] <- rgb_2gray(comb[,,,i]) }
内容的提问来源于stack exchange,提问作者user20003920
相关产品推荐
相关产品推荐

