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

如何将8×8二进制numpy数组转为灰度图像?全黑图问题求助

解决二进制numpy数组转灰度图全黑的问题

问题核心是数组值范围不匹配:PIL处理灰度图像时,默认采用0(黑色)到255(白色)的8位灰度区间,而你的数组仅包含0和1,1对应的亮度极低,肉眼几乎无法识别,因此输出全黑图像。

以下是具体修正方案:

方案1:缩放值到标准灰度范围(推荐)

将数组中的1转换为255(标准白色灰度值),同时确保数组类型为uint8(PIL支持的8位无符号整数类型),并明确指定灰度图像模式:

import numpy as np
from PIL import Image

# 处理数组:转换为uint8并将1缩放为255
scaled_array = (array.astype(np.uint8) * 255)

# 创建8位灰度图像并保存
img = Image.fromarray(scaled_array, mode='L')
img.save('dummy_pic.png')

如果你的数组原本就是uint8类型(值为0和1),可以简化为:

scaled_array = array * 255
img = Image.fromarray(scaled_array, mode='L')
img.save('dummy_pic.png')

方案2:使用1位二进制图像模式

也可以直接指定mode='1'创建1位二值图像,但部分图像查看器对该模式的支持可能不稳定:

from PIL import Image

# 转换数组类型后创建1位二值图像
img = Image.fromarray(array.astype(np.uint8), mode='1')
img.save('dummy_pic.png')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 17:40:52