2017-08-07 32 views
-1

如何從FITS文件訪問圖像子樣本?如何從FITS文件訪問圖像數據?

我無法確定文件中的數據究竟在哪裏!文件標題顯示它在第二個標題中,並且它的維數爲1024 * 1024!但是當我嘗試訪問第二個頭文件時,我沒有得到圖像數組,而是得到一個「非文件類型」文件!我相信我在這裏做錯了!

import matplotlib.pyplot as plt 
from astropy.io import fits 
import cv2 
headerList=fits.open('AIA20100630_0000_0211.fits') 
#Load table data as image data 
#imgData = headerList[1].data 
imgData = headerList[0].data 

hdu=headerList[1] 
print('shape :',hdu.shape) #shape is 1024*1024 

#show image 
plt.figure() 
plt.imshow(imgData) 
plt.show() 

回答

0

而不是使用fits.open()的,你可能要考慮使用fits.getheader('img.fits')fits.getdata('img.fits')。如果您只需要標題或圖像數據,這些方法通常會更方便。

在你的情況

from astropy.io import fits 
imgData = fits.getdata('AIA20100630_0000_0211.fits', 1) 

應該加載圖像數據的情況下直接通過HDU去。

+1

「這些m如果你需要的只是標題或圖像數據,方法比打開整個適合文件要快。「我的意思是,它不是時間上的「更快」,它只是'hdul = fits.open(filename)的快捷方式; data = hdul [0] .data'(或者'hdul [1] .data',如果第一個HDU是空的,對某些格式是通用的)。這對於非常基本的使用來說很好,並且通常很方便,但還是應該學習完整的面向對象的API來完成更復雜的任何事情。 – Iguananaut

1

即使你進入第二HDU這裏:

hdu=headerList[1] 

你不顯示從HDU的data,但你從第一HDU選擇imgData

imgData = headerList[0].data 
... 
plt.imshow(imgData) 

的解決將簡單地顯示hdu.data

plt.imshow(hdu.data) 
相關問題