我正试图通过取下平面框架来减少我的大炮天文图像,这很有效。但它让所有的值都很低(所以几乎是黑色的图片),这就是为什么我也想把它和平均值相乘。然而,这给了我一个错误。(不用乘法就行了。)
有人知道为什么吗?
Traceback(最近一次通话):文件"D:\astro\10-12\moon\fits\red.py",第16行,inimg=Image.fromarray(imarray)文件"C:\Python27\lib\site packages\PIL\Image.py",第1886行,在fromarray中引发TypeError("无法处理此数据类型")TypeError:无法处理此数据类型
这是我的代码
import Image
import numpy as np
im = Image.open('8bit/DPP_0001.TIF')
flat = Image.open('8bit/flat2.TIF')
#im.show()
imarray = np.array(im)
flatarray = np.array(flat)
avg = np.average(imarray)
imarray = (imarray/flatarray)*avg
img = Image.fromarray(imarray)
img.save("done/aap.png","png")
PIL的Image.fromarray()
支持有限范围的输入类型/通道组合(请参阅PIL/Image.py
,成员_fromarray_typemap
)。
从TIF文件加载的原始imarray
具有3个通道的8位整数值(字节)。
在您的例子中,图像的平均值产生了一个浮点值,当它与图像数据相乘时,它产生了所有像素的浮点值。
为了使fromarray
工作,您需要使用np.uint8( ... )
将像素值强制转换回字节值。