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

调用rgb_2gray报错:'RGB_image'需为三维数组的问题求助

问题解决:rgb_2gray函数维度不匹配错误

错误原因

你绑定后的数组维度为480×640×18,而rgb_2gray要求输入必须是单张RGB图像的3维数组(宽×高×3),或结构为N×宽×高×3的批量图像数组。你将6张RGB图(每张为宽×高×3)按第三维度直接拼接,导致第三维度变为3×6=18,不符合函数的输入规范。

两种解决方案

方案一:先转灰度再绑定(推荐)

在加载图像后,先对每张RGB图单独执行灰度转换,再将结果绑定成数组,从根源避免维度混乱:

library(abind)
library(OpenImageR)

# 加载数据
path = list.files("../df", ".jpg", full.names = T)
imgs = lapply(path, readImage)

# 对每张图单独做灰度转换
imgs_gray <- lapply(imgs, rgb_2gray)

# 绑定灰度图像为数组(最终维度:480×640×6)
comb_gray <- do.call(abind, c(imgs_gray, list(along = 3)))

方案二:调整现有数组维度后处理

如果已经生成了480×640×18的comb数组,可以通过重构维度结构适配rgb_2gray:

# 将480×640×18的数组重构成480×640×3×6(对应6张独立RGB图)
comb_reshaped <- array(comb, dim = c(480, 640, 3, 6))

# 转置为6×480×640×3,方便按单张图处理
comb_reshaped <- aperm(comb_reshaped, c(4, 1, 2, 3))

# 对每张图执行灰度转换
df_list <- lapply(1:6, function(i) rgb_2gray(comb_reshaped[i,,,]))

# 绑定结果为最终灰度数组(480×640×6)
df <- do.call(abind, c(df_list, list(along = 3)))

内容的提问来源于stack exchange,提问作者user22178063

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 03:45:18