减少天文图片平场PIL的错误

时间:2013-12-12 20:09:03

标签: python python-imaging-library

我试图通过取下有效的平面框来减少我的大炮天文图像。但它使所有的值都非常低(所以几乎是黑色的图片),这就是为什么我也想把它与平均值相乘。但是这给了我一个错误。 (虽然没有乘法,但它有效。)

有人知道为什么吗?

  

Traceback(最近一次调用最后一次):文件   “D:\ astro \ 10-12 \ moon \ fits \ red.py”,第16行,in       img = 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")

1 个答案:

答案 0 :(得分:1)

PIL的Image.fromarray()支持有限范围的输入类型/频道组合(请参阅PIL/Image.py,成员_fromarray_typemap)。

从TIF文件加载的原始imarray有3个8位整数值(字节)通道。

在您的情况下,图像的平均值产生一个浮点值,当它与图像数据相乘时,它产生所有像素的浮点值。

要使fromarray生效,您需要使用np.uint8( ... )将像素值强制回字节值。