Unity3D:像素字节阵列到Color32阵列(将ZXing与Vuforia结合使用)

时间:2012-05-30 09:33:00

标签: unity3d pixel qr-code zxing qcar-sdk

也许有人可以帮助我。我需要通过调用GetPixels32()来获得Color32 []数组。对于带有网络摄像头的QR码阅读器,这是一个很好的解决方案。 How to decode QR code using Unity3D

不幸的是,Vuforia只能给出一个字节数组......

Image.PIXEL_FORMAT mPixelFormat = Image.PIXEL_FORMAT.RGB565;
Image cameraImage = CameraDevice.Instance.GetCameraImage(mPixelFormat);
byte[] pixels = cameraImage.Pixels;

有没有人知道如何将Pixel字节数组制作成Color32数组? Here是我在Vuforia论坛上提出的问题。

也许在Unity for Android和iOS中,任何人都有任何其他QR码解码解决方案。 我非常感谢你的帮助。

编辑:Here与unityAnswers中的问题相同。

1 个答案:

答案 0 :(得分:2)

看起来你正在请求16位R5G6B5格式的图像数据,所以我希望数据格式是什么:5-6-5位格式的字节对。因此,将两个字节转换为常规Color结构就像:

color.r = (byte[0] & 0x1f) / (float)(0x1f);
color.g = ((byte[1] & 0x07) | ((byte[0] & 0xe0) >> 5)) / (float)(0x3f);
color.b = ((byte[1] & 0xf8) >> 3) / (float)(0x1f);

然后你可以通过投射将颜色转换为Color32。

这就是说,如果您可以以24位格式而不是16位格式请求图像数据,那么您可以直接将字节值提供给Color32的通道。