在Python2.7中,通过USB批量传输,我从相机获得了一个图像帧:
frame = dev.read(0x81, 0x2B6B0, 1000)我知道一帧是342x260 = 88920像素的低端,因为我从批量传输中读取了2x88920 = 177840 (0x2B6B0)。
如何将typecode=B帧数组的内容转换为uint16高字节顺序数组?
发布于 2018-06-27 00:33:41
下面这样的代码应该能起到作用:
frame_short_swapped = array.array('H', ((j << 8) | i
for (i,j)
in zip(frame[::2], frame[1::2])))它将来自frame的两个连续字节配对并解压缩成i和j。将j左移一个字节,并使用i对其进行or,有效地交换字节(也称为2字节类型的字节顺序转换),并将其提供给H类型的数组。我有点担心这一点,因为它应该对应于C short类型(根据文档),但类型大小实际上只能保证最小长度。我猜如果严格要求的话,你需要引入ctypes.c_uint16?
https://stackoverflow.com/questions/51030163
复制相似问题