为什么 picamera2 capture_array('raw') 方法调用返回一个 uint8 数组

问题描述 投票:0回答:1

我尝试使用 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 picamera
1个回答
0
投票

Raspberry Pi 论坛 sandyol 的帮助下 我可以解决这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.