我有一个来自设置为12位像素格式的相机的流。 我的问题是如何将像素值存储在数组中?
在我用16位像素格式拍摄照片之前,现在我改为12位并且我得到相同的全尺寸图像,屏幕上显示四个图像,我用来将这些值存储在一个ushort数组中然后
当我将相机设置为8位像素格式时,我将数据存储在一个字节数组中,但在12位时应该使用什么?
答案 0 :(得分:1)
根据我的评论,我们可以处理3字节"块"中的传入流,每个块提供2个像素。
// for a "chunk" of incoming array a[0], a[1], a[2]
ushort pixel1 = ((ushort)a[0] << 4) | ((a[1] >> 4) & 0xFF);
ushort pixel2 = ((ushort)(a[1] & 0xFF) << 4) | a[2];
(假设是big-endian)
答案 1 :(得分:-2)
您可以分配的最小内存大小是一个字节(8位),这意味着如果您需要12位数据来存储帧阵列中的一个像素,则应使用ushort
。并留下4位。这就是为什么用两个数字来设计这类东西更有效率的原因
(1 2 4 8 16 32 64 128 ..蚀刻)