gpt4 book ai didi

android - Mobile Vision API new detector frame 获取 Bitmap Image

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:10:42 25 4
gpt4 key购买 nike

我知道之前有人问过类似的问题:- Mobile Vision API - concatenate new detector object to continue frame processing

我正在接收框架,但是当我调用 frame.getBitmap() 时它返回一个空对象。我想在 https://github.com/tzutalin/dlib-android-app 中使用此位图 (Android dlib 库)FaceDet 函数。

最佳答案

根据 Mobile Vision API 文档,Frame 对象具有方法 getBitmap() 但明确指出

getBitmap()
Returns the bitmap which was specified in creating this frame, or null if no bitmap was used to create this frame.

如果你真的想得到Bitmap对象,你必须自己创建它。一种选择是通过 Frame 对象上的 getGrayscaleImageData() 方法。
如果返回的ByteBuffer中有一些字节,您可以将其转换为Bitmap

首先,您必须使用 getGrayscaleImageData() 结果中的字节数组创建 YuvImage。这是强制性步骤,因为字节数组在 YUV 中有图像/YCbCr颜色空间,编码为 NV21格式。所以第一行看起来像这样:

YuvImage yuvImage = new YuvImage(frame.getGrayscaleImageData().array(), ImageFormat.NV21, width, height, null);

widthheight 可以通过 getMedatada().getHeight()/getMedatada().getWidth( ) 方法。

然后您可以使用 ByteArrayOutputStream 快速压缩您的 YuvImage 对象。

ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
yuvImage.compressToJpeg(new Rect(0, 0, width, height), 100, byteArrayOutputStream);

从那里您可以再次将它转换为字节数组,最终在 BitmapFactory 中使用它。

byte[] jpegArray = byteArrayOutputStream.toByteArray();
Bitmap bitmap = BitmapFactory.decodeByteArray(jpegArray, 0, jpegArray.length);

我知道与简单的 getBitmap() 方法使用相比,它需要大量代码,但如果您在那种情况下确实需要位图,它就可以胜任。

关于android - Mobile Vision API new detector frame 获取 Bitmap Image,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43648204/

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