我已经问过here,但我只是想知道这是否不能用numpy来完成,因为无论如何我以后都会在读取numpy数组的cv2中使用numpy。
背景是,我从USB相机读取了13680字节的13个块,直到获得177840字节,即一个原始帧。我通过附加块来实现:
frame = dev.read(0x81, 0x3570, tout)
frame += dev.read(0x81, 0x3570, tout)
...
然后该列表将填充0-255个值,并且其中两个值将形成 1个0-65535值。所以我的问题是我该如何转换(我假设) 将uint8 LSB列表转换为一个uint16 numpy数组,其大小为列表的一半。
假设我有该列表:
list = [3,103,3,103]
然后我想要一个具有以下内容的numpy数组:
[26371, 26371]
或者是否有一种方法可以用我的USB设备中的13次读取立即填充一个numpy数组,使其末尾具有177840/2 uint16值?
答案 0 :(得分:1)
我也许知道了。
list = [3,103,3,103]
nlist = np.asarray(list, dtype='<B')
nlist = nlist.view(np.uint16)
print nlist, type(nlist[0])
输出:
[26371 26371] <type 'numpy.uint16'>