如何用Python从.tvips文件提取TEM图像并保存为PNG/TIF格式?
提取.tvips文件中的TEM图像并保存为常规格式
前置准备
先安装所需依赖包:
pip install libertem pillow
libertem:专门用于读取.tvips格式文件pillow:负责将图像数据转存为PNG/TIF等常规格式
提取并保存图像的代码示例
import numpy as np from libertem.api import Context from PIL import Image # 初始化liberTEM上下文 ctx = Context() # 加载目标.tvips文件,替换为你的实际文件路径 dataset = ctx.load("tvips", path="your_file.tvips") # 遍历所有图像,按顺序保存 for img_idx in range(dataset.shape[0]): # 获取单张1024×1024的图像原始数据(numpy数组格式) raw_image = dataset[img_idx].data # --- 保存为PNG(适配8位显示格式)--- # TEM图像多为16位数据,需归一化到0-255范围以适配PNG格式 normalized_img = ((raw_image - raw_image.min()) / (raw_image.max() - raw_image.min()) * 255).astype(np.uint8) Image.fromarray(normalized_img).save(f"tem_img_{img_idx:04d}.png") # --- 保存为TIF(保留16位原始精度)--- # 直接用原始数据保存,适合需要高精度分析的场景,可选LZW压缩 # Image.fromarray(raw_image).save(f"tem_img_{img_idx:04d}.tif", compression='LZW') print("所有图像提取保存完成")
关键说明
dataset.shape[0]:获取.tvips文件中包含的图像总数dataset[img_idx].data:通过索引直接访问单张图像的numpy数组数据- 格式选择:
- PNG:适合快速预览,需将16位数据归一化到8位
- TIF:支持16位原始数据,保留更多图像细节,适合后续专业分析
- 文件名用
img_idx:04d是为了保证图像按采集顺序排列(如0000、0001...),避免排序混乱
内容的提问来源于stack exchange,提问作者GMA
相关产品推荐
相关产品推荐

