PIL不支持.img格式?如何读取Fabry-Perot干涉仪拍摄的.img图像?
解决PIL无法打开Andor Solis CCD相机.img格式图像的问题
这类.img文件并非JPG/PNG等通用图像格式,而是Andor Solis CCD相机输出的原始二进制数据(无标准图像文件头),因此PIL/Pillow无法识别其格式。以下是几种可行的解决方案:
方法1:使用天文图像处理库astropy读取
astropy支持多种天文/CCD原始数据格式,可尝试直接读取;若不兼容则按原始二进制解析(需确认相机输出的图像尺寸和位深):
- 安装依赖:
pip install astropy numpy matplotlib
- 示例代码:
from astropy.io import fits import numpy as np import matplotlib.pyplot as plt file_path = 'C:/Users/mkmoh/Dropbox/20250317/MOR_L_20250317_192902_002.img' # 先尝试用FITS格式读取(部分Andor .img文件兼容FITS结构) try: hdul = fits.open(file_path) image_data = hdul[0].data hdul.close() except: # 按原始二进制解析,需替换为你的相机实际参数(宽、高、位深) # 示例:Andor常见16位无符号整数,假设尺寸为2048x2048 width, height = 2048, 2048 with open(file_path, 'rb') as f: image_data = np.fromfile(f, dtype=np.uint16).reshape((height, width)) # 显示图像 plt.imshow(image_data, cmap='gray') plt.colorbar() plt.show()
方法2:使用Andor专用第三方库pysolispy
pysolispy是针对Andor Solis数据的处理库,可直接解析其.img文件结构:
- 安装依赖:
pip install pysolispy matplotlib
- 示例代码:
from pysolispy import SolisImage import matplotlib.pyplot as plt file_path = 'C:/Users/mkmoh/Dropbox/20250317/MOR_L_20250317_192902_002.img' img = SolisImage(file_path) image_data = img.data # 显示图像 plt.imshow(image_data, cmap='gray') plt.show()
方法3:从Andor Solis导出为通用格式
如果不需要直接处理原始数据,可在Andor Solis软件中打开.img文件,将其导出为TIFF、PNG等PIL支持的格式,之后即可用PIL正常读取处理。
内容的提问来源于stack exchange,提问作者Mohamed Kaab
相关产品推荐
相关产品推荐

