如何将Numpy线性像素数组转换为Numpy多维图像数组
实现方法
你只需要通过numpy的数组变形操作即可完成转换,前提是你需要提前确认你要生成的图像三个参数:高度h、宽度w、通道数c,常规RGB图像的通道数为3。
步骤
- 把原始线性像素列表转换为numpy一维数组
- 调用
reshape方法调整为(高度, 宽度, 通道数)的常规图像数组维度即可,像素存储默认按行优先顺序(符合绝大多数图像扫描顺序)
代码示例
import numpy as np # 替换为你的原始线性像素列表 flat_pixels = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 131,131,131,134,134,134,137,137,137,139,139,139,141,141,141] # 转成numpy数组,像素值范围0-255用uint8类型节省空间 flat_arr = np.array(flat_pixels, dtype=np.uint8) # 按你的实际图像尺寸修改,示例总元素数51 = 3行 * 17列 * 3通道 h = 3 w = 17 c = 3 # 维度变形 img_arr = flat_arr.reshape((h, w, c))
注意事项
- 变形前请确认原始线性像素的总元素数严格等于
h * w * c,否则会报错,你问题中贴出的列表末尾缺了1个141,补全后再操作即可 - 如果你需要的是通道优先格式
(通道数, 高度, 宽度),可以变形后调用transpose调整:img_arr = flat_arr.reshape((c, h, w)).transpose(1,2,0)
内容的提问来源于stack exchange,提问作者user9699274
相关产品推荐
相关产品推荐

