将(N,128,128,3)彩色像素numpy数组转为单通道灰度数组的最简方法
三通道二值掩码数组转单通道灰度数组最简实现
核心思路
你的输入数组是二值掩码,三通道像素仅存在[0.0, 0.0, 0.0]、[1.0, 1.0, 1.0]两种取值,不需要使用常规RGB转灰度的加权计算公式,直接复用通道值即可,无多余计算开销。
最优最简代码
直接截取任意一个通道并保留最后一个维度,输出形状直接匹配要求,运行效率最高:
# 输入数组为形状(N, 128, 128, 3)的numpy数组,将rgb_arr替换为你的实际数组名即可 gray_arr = rgb_arr[..., :1]
鲁棒性等价写法
如果需要兼容可能存在的通道值微小误差场景,可沿通道轴做归约计算,结果完全一致:
# 沿通道轴取均值,保留维度 gray_arr = np.mean(rgb_arr, axis=-1, keepdims=True) # 沿通道轴取最大值,保留维度 gray_arr = np.max(rgb_arr, axis=-1, keepdims=True)
注:以上所有写法输出的数组形状均为
(N, 128, 128, 1),像素值仅包含0.0、1.0,完全匹配需求。
内容的提问来源于stack exchange,提问作者Eddy
相关产品推荐
相关产品推荐

