如何使用 Astropy 转换(或缩放)FITS 图像

How to convert (or scale) a FITS image with Astropy

使用 Astropy 库,我创建了一个 FITS 图像,它是通过从 2 个实际 FITS 图像进行插值制作的(它们被缩放为“int16”,软件的正确格式我使用:Maxim DL).

但是这张图片的比例是 float64 而不是 int16。并且任何天文处理软件都无法读取(FITS Liberator除外)

您知道如何进行吗?我们可以通过更改 header 中的 "BITPIX" 来转换 FITS 图像吗?

我试过了:(按照这个方法:Why is an image containing integer data being converted unexpectedly to floats?

from astropy.io import fits

hdu1=fits.open('mypicture.fit')
image=hdu1[0]
print(image.header['BITPIX'])  # it gives : -64

image.scale('int16')
data=image.data
data.dtype
print(image.header['BITPIX']) # it gives : 16
hdu1.close()

但是,当我检查"mypicture.fit"的newly-modified比例时,它仍然显示-64! 未保存和应用任何更改!

如果我对你的问题的理解正确,这应该有效。

from astropy.io import fits
import numpy as np

# create dummy fits file
a = np.array([[1,2,3],
              [4,5,6],
              [7,8,9]],dtype=np.float64)

hdu = fits.PrimaryHDU()
hdu.data = a

# looking at the header object confirms BITPIX = -64
hdu.header

# change data type
hdu.data = np.int16(hdu.data)

# look again to confirm BITPIX = 16
hdu.header