Python3编写多颜色通道合并函数返回结果不符合预期求助
问题排查点
- 变量引用错误:函数入参为
channels,但循环逻辑中直接使用了未定义的image变量,运行时会直接触发NameError - 业务逻辑倒置:原有遍历逻辑是按像素索引拆分单通道数值,最终会把不同通道的同位置像素拆分为独立子元素,和「同位置像素拼接所有通道值」的需求完全相反
- 维度取值错误:
channels_num = len(channels[0][0])取的是单通道内单个像素的维度,实际需要的总通道数应为输入channels的长度,即len(channels)
修正后代码
def combine_channels(channels): # 取第一个通道的高、宽,默认输入的所有通道尺寸完全一致 height = len(channels[0]) width = len(channels[0][0]) combined = [] # 遍历每一行 for row_idx in range(height): current_row = [] # 遍历当前行的每一列像素位置 for col_idx in range(width): # 收集所有通道在当前坐标的像素值,拼接为多通道像素 pixel = [channel[row_idx][col_idx] for channel in channels] current_row.append(pixel) combined.append(current_row) return combined
效果验证
输入测试用例:
print(combine_channels([[[1]], [[2]]]))
输出结果:[[[1, 2]]],完全匹配预期。
内容的提问来源于stack exchange,提问作者Oney
相关产品推荐
相关产品推荐

