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

Python基于PIL生成37x37黑白图像 0白1黑输出与预期不符求助

错误原因及修复方案

你代码里存在3个核心问题导致输出不符合预期:

  • 你定义的cols37数组实际只有36个元素,比你需要的37列少1位,生成的矩阵尺寸本身就不符合37×37的要求
  • PIL的'1'二值图像模式的像素映射规则和你的预期相反:True/1对应白色像素,False/0对应黑色像素,和你要求的1黑0白规则刚好颠倒
  • 你当前的逻辑是把同一行cols37重复37次作为所有行的内容,生成的矩阵所有行完全一致,只会输出纯竖条纹图案,和你预期的带特殊图案的目标图像不符,你需要补充构造37行各自不同的矩阵数据

修正后的示例代码

import numpy as np
from PIL import Image
# 先补全cols37为37位,后续可替换为你实际需要的37行不同的行数据,这里仅做逻辑演示
cols37 = [1,0,1,1,0,0,1,0,1,1,1,1,0,0,0,1,0,0,0,0,1,0,0,0,1,1,1,1,0,1,0,0,1,1,0,1,1] # 末尾补1位凑37个元素
rows = []

for i in range(37):
    # 深拷贝避免所有行引用同一个列表
    rows.append(cols37.copy())

mura = np.array(rows, dtype=np.bool)
# 按你的规则取反,实现1对应黑、0对应白的效果
mura = ~mura
temp = Image.fromarray(mura, '1')
temp.save('my1.png')
# 正确打开图像的写法
img = Image.open('my1.png')
img.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 12:06:04