【问题标题】:NV21 image to Bitmap conversionNV21 图像到位图的转换
【发布时间】:2012-11-15 16:05:06
【问题描述】:

我正在尝试将 NV21 图像从 LG 3D Android 手机转换为位图,以便通过 TCP 套接字将其发送到计算机。

目前它必须经过 NV21->YUV->JPEG->ByteBuffer->位图转换,这只是在消耗 CPU,有没有更好的方法来减少一些转换?

谢谢

【问题讨论】:

    标签: android image-processing android-camera android-image


    【解决方案1】:

    也许计算机可以直接接受 NV21 缓冲区?如果您坚持使用Bitmap格式,请注意Android位图与Windows位图不同。如果在Android端需要RGB,可以使用这里描述的recepy:yuv to rgb in assembler

    【讨论】:

    • 那么你的意思是可以直接通过TCP发送NV21?
    • 当然。 TCP 协议对任何像素格式都没有障碍。您想要的任何转换都可以在服务器上轻松执行。另一方面,使用 JPG 可能更有效:您会浪费设备 CPU 时间进行压缩,但会在网络传输上获得很多收益。
    • 我明白了,但是 NV21 文件在发送之前仍然需要转换为某种字节缓冲区吗?网络不是问题,而是我需要节省的 CPU 时间和功率。我对 Java 和 Android 不熟悉
    • NV12 不是作为文件从相机到达,而是作为字节数组。 Java 可以通过 TCP 套接字轻松发送字节数组。
    • 哦,感谢您的信息,抱歉我缺乏知识而不是“NV21->YUV->JPEG->ByteBuffer->Bitmap”。
    【解决方案2】:

    您可以使用 RenderScript 直接将 NV21 转换为位图(或字节数组)。在具有 720p 图像的 SGS3 上,我能够获得大约 20 FPS。

    RenderSctipt 是一个 Android 子系统,主要作为 CPU 代码的本机运行(在某些神奇的情况下甚至在 GPU 上),并且可以很好地并行化以使用所有可用的内核。

    您可以在这里阅读更多相关信息 - Converting camera YUV-data to ARGB with renderscript

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-26
      • 2011-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-13
      • 1970-01-01
      • 2014-06-09
      相关资源
      最近更新 更多