0

我对 Python 还很陌生,我一直在尝试为 Python 重新创建一个有效的 IDL 程序,但我被卡住了并且不断出错。我还没有找到解决方案。该程序总共需要 4 个 FITS 文件(img 和校正图像 dark、flat1、flat2)。操作如下:

flat12 = (flat1 + flat2)/2

img1 = (img - dark)/flat12

所述文件具有尺寸(1024,1024,1)。我已将它们的大小调整为 (1024,1024) 以便能够使用im_show()函数。

我也尝试过使用cv2.add(),但我得到了这个:

类型错误:参数“src1”的预期 Ptr

有什么解决方法吗?提前致谢。

4

1 回答 1

2

要阅读您的 FITS 文件,请使用astropy.io.fitshttp ://docs.astropy.org/en/latest/io/fits/index.html 这将为您提供 Numpy 数组(如果需要,还有 FITS 标头,有不同的方法可以做到这一点,如在文档中解释),因此您可以执行以下操作:

>>> from astropy.io import fits
>>> img = fits.getdata('image.fits', ext=0) # extension number depends on your FITS files
>>> dark = fits.getdata('dark.fits') # by default it reads the first "data" extension
>>> darksub = img - dark
>>> fits.writeto('out.fits', darksub) # save output

如果您的数据有一个额外的维度,如 (1024,1024,1) 形状所示,并且如果您想删除该轴,您可以使用正常的 Numpy 数组切片语法darksub = img[0] - dark[0]:否则,在上面的示例中,它将生成并保存 (1024,1024,1) 图像。

于 2020-01-24T13:03:19.583 回答