float64格式导致的“new style getargs format but argument is not a tuple”

本文详细介绍了在使用Python生成二维矩阵并尝试将其显示为灰度图像时遇到的问题及解决方案。作者最初在尝试填充像素时遇到错误,通过调试发现变量类型不符导致问题,最终通过类型转换成功显示图像。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用python生成了一个二维矩阵Znew,想用灰度图像显示出来,于是:

imgobj = Image.new("L",(700,500),"black")
imgdraw = ImageDraw.Draw(imgobj)

for i in range(0,700):
       for j in range(0,500):
               v = round(Znew[i,j])
               imgdraw.point((i,j), fill=(v))

到这一步,执行到imgdraw.point((i,j), fill=(v))时报错:new style getargs format but argument is not a tuple

最后一句改为:imgdraw.point((i,j), fill=(128)),不报错,出现一张全灰的图,怀疑问题出在变量v上

一查,v为float64格式,自己试了一下:

help(round(3.1416)),结果是int型的。

然后:

a = numpy.array([3.6,7,7], dtype='float64')

再help(round(a[0])),结果仍然是float64型的。

说明round()函数会把普通float型转换为int型,但不是能float64转换为int

于是修改语句:

for i in range(0,700):
       for j in range(0,500):
               v = int(round(Znew[i,j]))
               imgdraw.point((i,j), fill=(v))

正常运行,无报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值