我尝试使用 picamera2 python 模块从树莓派 5 上的相机模块 3 获取原始拜耳数据。
我正在尝试从 raw.py 示例中派生的一些代码(https://github.com/raspberrypi/picamera ... les/raw.py).
令我惊讶的是,电话来了
picam2.capture_array("raw")
返回 dtype uint8 的 numpy ndarray。
我希望数据是uint16。看起来每个像素的高 4 位都被截断了。 这是我正在使用的代码:
import time
from picamera2 import Picamera2, Preview
picam2 = Picamera2()
#picam2.start_preview(Preview.QTGL)
config = picam2.create_still_configuration()
print(config)
print()
picam2.configure(config)
picam2.start()
time.sleep(2)
raw = picam2.capture_array("raw")
print(picam2.stream_configuration("raw"))
print()
print(raw.dtype)
它在以下输出中创建:
{'use_case': 'still', 'transform': <libcamera.Transform 'identity'>, 'colour_space': <libcamera.ColorSpace 'sYCC'>, 'buffer_count': 1, 'queue': True, 'main': {'format': 'BGR888', 'size': (4056, 3040)}, 'lores': None, 'raw': {'format': 'SRGGB12_CSI2P', 'size': (4056, 3040)}, 'controls': {'NoiseReductionMode': <NoiseReductionModeEnum.HighQuality: 2>, 'FrameDurationLimits': (100, 1000000000)}, 'sensor': {}, 'display': None, 'encode': None}
{'format': 'BGGR16_PISP_COMP1', 'size': (4056, 3040), 'stride': 4096, 'framesize': 12451840}
uint8
如您所见,流配置格式被描述为“BGGR16_PISP_COMP1”,但是返回的numpy数组的dtype是uint8。
我想知道,该怎么做才能获得12位全色深度的数据?。
在 Raspberry Pi 论坛 sandyol 的帮助下 我可以解决这个问题。