如何从uint8原始图像数据数组创建uint16 numpy数组

时间:2018-03-06 16:12:17

标签: python numpy image-processing

当与USB摄像头连接并抓取图像数据时,我遇到了将数据保存为16位的问题。我将相机像素格式设置为Mono16,但每当我将原始图像数据保存到numpy数组时,数组默认为uint8数据类型。我注意到从Mono8切换到Mono16时原始数据阵列的大小翻了一番。我已经研究过numpy as_strided,但仍然没有解决问题。这是一段代码,以帮助显示情况的基本示例。

QFile

1 个答案:

答案 0 :(得分:0)

您可以使用视图投射。请注意,视图转换重新解释数据缓冲区而不实际修改它,因此它很便宜。

data = numpy.array(im.getData()).view(numpy.uint16)

如果数据的字节顺序与您机器的本机字节顺序匹配。

否则您需要使用其中一个

data = numpy.array(im.getData()).view('<u2')
data = numpy.array(im.getData()).view('>u2')

dtype规范字符串中的'>' / '<'代表大/小端。 'u'表示unsigned int,'2'表示两个字节。