图像处理为byte []

时间:2018-01-02 06:47:49

标签: java android arrays image

对不起,我不擅长英语。

我想制作一个实时图像处理应用程序。(Binarization, color inverse...etc.)

它需要速度,所以我想将其操作为byte[],而不转换为ImageBitmap

我从相机获取的图像格式为YUV(NV21),但由于我不了解此格式,因此我将其转换为JPEG格式。

但它也没有像我预期的那样工作。(我认为每个像素一个字节或每个像素三个字节。)

所以,

  1. 如何将此manipulation(binarization, color inverse)作为JPEG字节数组?
  2. 或如何将NV21格式字节数组转换为RGB字节数组?
  3. 我使用该方法将NV21转换为JPEG

    YuvImage yuvimage = new YuvImage(bytes, ImageFormat.NV21, width, height, null);
            ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
            yuvimage.compressToJpeg(new Rect(0, 0, width, height), 100, outputStream);
    

    我从yuv获得了onPreviewFrame(Camra.PreviewCallback)图像字节数组。

1 个答案:

答案 0 :(得分:1)

我认为您可以使用setPreviewFormat(int)设置除摄像头捕获的默认NV21格式以外的其他格式。

https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21