【问题标题】:Opening and showing fits images in python在 python 中打开和显示适合图像
【发布时间】:2016-04-02 01:33:36
【问题描述】:
import matplotlib.pyplot as plt
from astropy.io import fits
def openfit(b):
    hdu_list = fits.open(b)
    hdu_list.info()
    image_data = hdu_list[0].data
    plt.imshow(image_data, cmap='gray')
    plt.colorbar()
    plt.show()

 openfit(r"C:\Users\kapla_000\Desktop\barkin\bilgisayar\goruntu\HorseHead.fits")

我使用这段代码打开并显示我从 (http://www.astropy.org/astropy-tutorials/FITS-images.html) 获取的 HorseHead fit 图像

openfit(r"C:\Users\kapla_000\Desktop\barkin\bilgisayar\goruntu\NGC2392_CXO.fits")

当我尝试使用相同的代码打开 NGC2392_CXO(http://people.sabanciuniv.edu/ersing/proj102/)

我在线收到错误:“plt.imshow(image_data, cmap='gray')”

plt.imshow(image_data, cmap='gray')
  File "C:\Users\kapla_000\Anaconda3\lib\site-packages\matplotlib\pyplot.py", line 3022, in imshow
**kwargs)
  File "C:\Users\kapla_000\Anaconda3\lib\site-packages\matplotlib\__init__.py", line 1811, in inner
return func(ax, *args, **kwargs)
  File "C:\Users\kapla_000\Anaconda3\lib\site-packages\matplotlib\axes\_axes.py", line 4947, in imshow
im.set_data(X)
  File "C:\Users\kapla_000\Anaconda3\lib\site-packages\matplotlib\image.py", line 449, in set_data
raise TypeError("Image data can not convert to float")
TypeError: Image data can not convert to float

我认为问题在于图像文件的尺寸。 “hdu_list.info()”行给出了图像适合文件的属性。对于 HorseHead,它给出了

Filename:                
C:\Users\kapla_000\Desktop\barkin\bilgisayar\goruntu\HorseHead.fits
No.    Name         Type      Cards   Dimensions   Format
0    PRIMARY     PrimaryHDU     161   (891, 893)   int16   
1    er.mask     TableHDU        25   1600R x 4C   [F6.2, F6.2, F6.2, F6.2] 

对于 NGC2392_CXO,同一行给出

Filename:   
C:\Users\kapla_000\Desktop\barkin\bilgisayar\goruntu\NGC2392_CXO.fits
No.    Name         Type      Cards   Dimensions   Format
0    PRIMARY     PrimaryHDU      32   ()              
1    EVENTS      BinTableHDU    884   238647R x 19C   [1D, 1I, 1I, 1J, 1I,     
1I, 1I, 1I, 1E, 1E, 1E, 1E, 1J, 1J, 1E, 1J, 1I, 1I, 32X]   
2    GTI         BinTableHDU     28   1R x 2C      [1D, 1D]   

在 HorseHead 列表的第 0 个索引中,它具有整数维度,而 NGC2392_CXO 没有维度。我似乎无法理清如何查看 NGC2392_CXO

【问题讨论】:

  • 根据 ImageMagick,NGC2392_CXO 图像尺寸为 64x238647 像素。我认为问题在于其庞大的规模。
  • 对不起,简短的评论,但如果你使用 aplpy,你可能会省去很多麻烦。

标签: python image show dimension fits


【解决方案1】:

就 FITS 格式而言,从技术上讲,您尝试打开的文件不包含图像。 Primary HDU 没有数据,另外两个 HDU 是表格,而不是图像。某些约定可以将图像存储在表中,但在这种情况下,列结构看起来不像,尽管查看列名会提供一些见解。

但一般来说,如果你想用 Python 显示 FITS 图像,如果你至少从 aplpy 开始,你通常会得到最直接和最轻松的结果。但是对于这个特定的文件,我不确定你在期待什么。

【讨论】:

  • 我认为astropy 是人们现在使用的。
  • @TrentonMcKinney APLpy 是astropy affiliated package。 Astropy 本身包含与图像处理相关的库和实用程序,但没有专门用于轻松显示图像。
猜你喜欢
  • 2013-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-13
  • 2013-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多