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

如何将uint8数组转为480×640的uint16格式相机帧数组?

解决方案

你可以通过numpy的view方法直接将连续的两个uint8字节解释为一个uint16元素,再调整形状到目标维度,具体代码如下:

import numpy as np

# 读取原始字节数组
raw = np.asarray(d.GetFrameData(), dtype=np.uint8)

# 1. 将uint8数组按uint16类型解析(每2字节合并为1个16位像素值)
# 注意:字节序需匹配相机输出,<u2为小端,>u2为大端,按需调整
frame_16bit = raw.view(dtype=np.uint16)

# 2. 调整形状为目标的(640, 480)
frame_final = frame_16bit.reshape((640, 480))

# 验证结果
print(frame_final.shape, frame_final.dtype)
# 预期输出:(640, 480) uint16

关键细节说明:

  • 用view而非astype:astype会把单个uint8值单独转换为uint16(比如255→255),无法实现两字节合并;view是直接重新解释内存字节组合,正好满足16位像素的生成需求。
  • 字节序适配:如果转换后像素值异常(如全0或数值错乱),需切换字节序参数('<u2'或'>u2'),这取决于相机的16位数据存储格式。
  • 维度顺序调整:若最终数组显示的画面旋转/颠倒,可尝试先reshape为(480, 640)再转置frame_final.T,适配相机帧的存储顺序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 08:13:19