Java 在Android上将16位原始RGB_565图像转换为位图

Java 在Android上将16位原始RGB_565图像转换为位图,java,android,image,bitmap,rgb,Java,Android,Image,Bitmap,Rgb,我正试图从一个嵌入式摄像头获得一个分辨率为80 x 60的16位彩色图像()。我成功地从相机中获取9600(80*60*16/8)字节,但在显示图像时遇到问题。我使用以下代码将字节数组转换为位图: bm = Bitmap.createBitmap(80, 60, Bitmap.Config.RGB_565); bm.copyPixelsFromBuffer(ByteBuffer.wrap(jpegBytes)); jpegBytes是图像字节的数组,长度为9600字节 现在,我得到的图像如下所

我正试图从一个嵌入式摄像头获得一个分辨率为80 x 60的16位彩色图像()。我成功地从相机中获取9600(80*60*16/8)字节,但在显示图像时遇到问题。我使用以下代码将字节数组转换为位图:

bm = Bitmap.createBitmap(80, 60, Bitmap.Config.RGB_565);
bm.copyPixelsFromBuffer(ByteBuffer.wrap(jpegBytes));
jpegBytes是图像字节的数组,长度为9600字节

现在,我得到的图像如下所示:

99%的时间。但是,我可以获得如下未损坏的图像:

很少

看起来所有像素都在正确的位置,但它们的RGB值混淆了。例如,两张照片之间的白色部分是相同的,因为RGB的顺序与变白无关。然而,很明显,这些颜色是混在一起的,因为红色的椅子在损坏的图像中显示为蓝色,而蓝色的背包在损坏的图像中显示为绿色


有人对为什么会发生这种情况有什么建议吗?

1)您如何获取数据-第4.3/4.4节-原始数据或打包数据。如果您使用的是RAW,您是否尝试过将其包装为RAW,则会出现噪音问题。2) 你是否正确地解释了接收器代码中的大端字节/小端字节或字节顺序。我正在获取原始数据。我知道原始数据没有被破坏,因为当我使用相机附带的计算机软件从相机获取视频馈送时,我能够获得一致的、未被破坏的16位彩色视频。“计算大/小尾数”字节顺序是什么意思?我知道对于4位和8位视频,我不得不担心字节排序,但安卓的方法不应该为我处理16位字节排序吗?我不知道安卓软件附带了它。我的假设是,你不知怎么地把串行信号输入到安卓系统中,并试图从那里获取位图。作为测试,捕获单色图像并查看数据,以查看RGB值是否未被交换。因为你的照片有白色,但看起来仍然是白色,但其他颜色是错误的,我会从那里开始。