You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现BayerRG8/BayerRG12原始相机数据保存为.raw/.cr2文件

推荐的Python库及实现方案

一、保存为纯.raw文件

纯.raw是未经封装的原始字节流,Lightroom/Darktable可通过手动指定参数(分辨率、Bayer格式、位深度)导入,无需额外依赖,直接用numpy即可实现:

1. 处理BayerRG8(uint8)

import numpy as np

# 假设frame为形状(1216,1936,1)的uint8数组
frame = frame.squeeze()  # 移除最后一个维度,转为(1216,1936)
frame.tofile("output_rgb8.raw")

2. 处理BayerRG12(uint16)

你的uint16数组中每个像素实际是12位数据(通常高4位补0),需打包为紧凑的12位字节流(每3字节存储2个12位像素):

import numpy as np

frame = frame.squeeze().astype(np.uint16)
# 拆分12位数据的高低位
high_8bits = ((frame >> 4) & 0xFF).astype(np.uint8)
low_4bits = (frame & 0x0F).astype(np.uint8)
# 按每2个像素打包为3字节的格式重组
packed = np.zeros((frame.size * 3) // 2, dtype=np.uint8)
packed[::3] = high_8bits[::2]
packed[1::3] = high_8bits[1::2]
packed[2::3] = low_4bits[::2] | (low_4bits[1::2] << 4)
packed.tofile("output_rgb12.raw")

导入后期软件时,手动设置:分辨率1216×1936、Bayer格式RGGB、位深度12位即可。

二、保存为DNG格式(推荐,无需手动配置)

DNG是Adobe制定的通用RAW格式,Lightroom/Darktable可直接识别,无需手动导入参数,推荐以下两种方式:

1. 使用OpenCV(简单直接)

OpenCV 4.0+版本支持写入DNG,代码简洁:

import cv2
import numpy as np

frame = frame.squeeze()  # 转为(1216,1936)
# 指定Bayer格式参数,RGGB对应cv2.COLOR_BAYER_RGGB2BGR
params = [cv2.IMWRITE_DNG_BAYER_PATTERN, cv2.COLOR_BAYER_RGGB2BGR]
# 写入DNG文件
cv2.imwrite("output.dng", frame, params)

注:12位uint16数组写入时会自动处理为12位DNG,无需额外转换。

2. 使用pyexiv2(自定义元数据)

如果需要添加相机型号、ISO、快门速度等EXIF元数据,可使用pyexiv2实现:

import numpy as np
import pyexiv2

frame = frame.squeeze()
# 先写入原始数据到临时文件
frame.tofile("temp_raw.bin")
# 创建DNG文件并写入元数据
dng_img = pyexiv2.Image("output.dng")
exif_tags = {
    "Exif.Image.ImageWidth": 1936,
    "Exif.Image.ImageLength": 1216,
    "Exif.Photo.BitsPerSample": 8 if frame.dtype == np.uint8 else 12,
    "Exif.Photo.PhotometricInterpretation": 32803,  # 对应RGGB Bayer格式
    "Exif.Image.Make": "Allied Vision",
    "Exif.Image.Model": "你的相机型号"
}
dng_img.modify_exif(exif_tags)
# 将临时文件的原始数据写入DNG(需保证DNG结构合规,也可结合libraw完善)

关于CR2格式

CR2是佳能专属RAW格式,无公开标准,第三方库难以生成符合规范的文件,且Lightroom/Darktable对DNG的兼容性远优于自定义CR2,因此不推荐生成CR2,优先选择DNG。

内容的提问来源于stack exchange,提问作者Phil333

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 00:45:28