gpt4 book ai didi

java - Android 上的 16 位 RAW RGB_565 图像

转载 作者:行者123 更新时间:2023-12-01 04:32:32 28 4
gpt4 key购买 nike

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

bm = Bitmap.createBitmap(80, 60, Bitmap.Config.RGB_565);
bm.copyPixelsFromBuffer(ByteBuffer.wrap(jpegBytes));

jpegBytes 是图像字节数组,长度为 9600 字节。

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

corrupted image

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

uncorrupted image

很少。有人对为什么会发生这种情况有任何建议吗?非常感谢!

更新:

似乎所有像素都位于正确的位置,但它们的 RGB 值混合在一起。例如,两张照片之间的白色部分是相同的,因为 RGB 的顺序对于获得白色并不重要。但是,很明显,颜色混合了,因为红色椅子在损坏的图像中显示为蓝色,蓝色背包在损坏的图像中显示为绿色

最佳答案

我相信问题是由于您的配置 Bitmap.Config.RGB_565 引起的。以下是 Android 文档的摘录

Each pixel is stored on 2 bytes and only the RGB channels are encoded: red is stored with 5 bits of precision (32 possible values), green is stored with 6 bits of precision (64 possible values) and blue is stored with 5 bits of precision. This configuration can produce slight visual artifacts depending on the configuration of the source. For instance, without dithering, the result might show a greenish tint. To get better results dithering should be applied. This configuration may be useful when using opaque bitmaps that do not require high color fidelity.

希望这有帮助

关于java - Android 上的 16 位 RAW RGB_565 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17839993/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com