2016-03-31 4 views
1
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") 

ich dieses Stück Code zu öffnen und zu zeigen, meinen Pferdekopf paßt Bild, das ich von nahm (http://www.astropy.org/astropy-tutorials/FITS-images.html)Öffnen und zeigen Bilder in Python passen

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

wenn ich versuche, den gleichen Code zu verwenden, um offen NGC2392_CXO (http://people.sabanciuniv.edu/ersing/proj102/)

i den Fehler auf Linie zu bekommen: "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 

Ich denke, das Problem ist die Abmessungen der Bilddateien. Die Zeile „hdu_list.info()“ gibt die Eigenschaften des Bildes passen file.and für Pferdekopf es

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] 

Und für NGC2392_CXO die gleiche Linie gibt von

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] 

In dem 0-ten Index gibt HorseHead-Liste hat Integer-Dimensionen, in denen NGC2392_CXO keine Dimension hat. Ich kann nicht sehen, wie die NGC2392_CXO zu sehen ist

+0

Laut ImageMagick ist die Bildgröße NGC2392_CXO 64x238647 Pixel. Ich denke, dass es die schiere Größe ist, die das Problem ist. –

+0

Sorry für den kurzen Kommentar, aber Sie werden sich wahrscheinlich eine Menge Ärger ersparen, wenn Sie aplpy ​​benutzen. – Iguananaut

Antwort

2

Die Datei, die Sie öffnen möchten, enthält technisch gesehen kein Bild, was das FITS-Format betrifft. Die primäre HDU hat keine Daten und die anderen zwei HDUs sind Tabellen, keine Bilder. Es ist bei einigen Konventionen möglich, Bilder in Tabellen zu speichern, aber die Spaltenstruktur sieht in diesem Fall nicht so aus, obwohl ein Blick auf die Spaltennamen einige Einblicke bieten würde.

Aber im Allgemeinen, wenn Sie FITS Bilder mit Python anzeigen möchten, haben Sie oft die sofortige und mühelose Ergebnisse, wenn Sie mindestens mit aplpy starten. Aber für diese spezielle Datei bin ich mir nicht sicher, was Sie erwarten.

Verwandte Themen