使用Image.fromarray()生成图像出现异常竖线问题求助
问题解决:PIL显示numpy数组出现彩色竖线
你遇到的彩色竖线问题根源在于numpy数组的数据类型不匹配:
np.full默认创建的是int64类型数组,但PIL的RGB模式要求输入必须是uint8(0-255的无符号8位整数)类型。- 当PIL尝试解析非uint8类型的数组时,会错误地读取数据,导致出现异常的色彩条纹。
修复方案
有两种简单的解决方式:
方式1:创建数组时指定dtype
from PIL import Image import numpy as np a = np.full((400, 400, 3), 255, dtype=np.uint8) im = Image.fromarray(a, mode="RGB") im.show()
方式2:生成后转换数据类型
from PIL import Image import numpy as np a = np.full((400, 400, 3), 255) a = a.astype(np.uint8) # 转换为PIL兼容的uint8类型 im = Image.fromarray(a, mode="RGB") im.show()
原理说明
RGB图像的每个颜色通道取值范围是0-255,正好对应uint8类型的数值范围。使用int64等其他类型时,PIL会将64位的数据按8位分段读取,导致颜色数据混乱,最终出现你看到的交替竖线。
内容的提问来源于stack exchange,提问作者ilan
相关产品推荐
相关产品推荐

