如何将Python numpy数组保存为.raw、.nef等格式的raw图像文件
NumPy数组保存为.raw/.nef格式方案
.nef是尼康品牌的专有RAW格式,包含厂商私有传感器元数据、拍摄参数等信息,没有公开的通用写入接口,常规需求下优先选择保存为通用.raw格式即可。
实现方法
方法1:NumPy原生保存.raw(无额外依赖,最常用)
.raw本质是无任何头信息的裸像素二进制流,直接用NumPy自带的tofile方法即可完成保存,示例代码如下:
import numpy as np # 你的目标数组,尺寸为(1944, 2592),请根据实际位深设置dtype: # 8位raw用np.uint8,12/14/16位raw统一用np.uint16 raw_arr = np.random.randint(0, 65535, size=(1944, 2592), dtype=np.uint16) # 保存为.raw文件 raw_arr.tofile("output_image.raw") # 读取验证代码(可选) read_arr = np.fromfile("output_image.raw", dtype=np.uint16).reshape(1944, 2592) print(np.array_equal(raw_arr, read_arr)) # 输出True即说明保存无误
方法2:生成带元数据的通用RAW格式(可选)
如果需要生成可被常规RAW查看器直接识别的RAW文件,可选择保存为Adobe公开标准的DNG格式,可通过exiftool工具手动注入尺寸、拜耳阵列、位深等元数据,不需要额外代码开发。
注意事项
- 保存前务必确认数组的数据类型与实际位深匹配,否则会出现像素值异常、图像尺寸错位的问题
- 纯.raw文件不存储元信息,后续打开使用时需要手动指定图像尺寸、位深、拜耳排列规则等参数
- RawPy仅支持RAW文件读取解析,不具备写入能力,无法满足你的保存需求
内容的提问来源于stack exchange,提问作者Patchouli_goo
相关产品推荐
相关产品推荐

