减少天文图片平场PIL时出错



我正试图通过取下平面框架来减少我的大炮天文图像,这很有效。但它让所有的值都很低(所以几乎是黑色的图片),这就是为什么我也想把它和平均值相乘。然而,这给了我一个错误。(不用乘法就行了。)

有人知道为什么吗?

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( ... )将像素值强制转换回字节值。

最新更新