用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))
正常运行,无报错。