Yuv (NV21) Bildkonvertierung in Bitmap [duplizieren]

Diese Frage hat hier bereits eine Antwort:

NV21-Byte-Array in Bitmap-lesbares Format konvertieren [duplizieren] 2 Antworten

Ich versuche, Bilder aus der Kameravorschau aufzunehmen und darauf zu zeichnen. Das Problem ist, dass ich nur 3-4 fps zum Zeichnen habe und die Hälfte der Bildverarbeitungszeit für das Empfangen und Dekodieren von NV21-Bildern aus der Kameravorschau und das Konvertieren in @ benötigt wirBitma. Ich habe einen Code für diese Aufgabe, den ich auf einer anderen Stapelfrage gefunden habe. Es scheint nicht schnell zu sein, aber ich weiß nicht, wie ich es optimieren soll. Es dauert ungefähr 100-150 ms bei Samsung Note 3, Bildgröße 1920x1080. Wie kann ich es schneller machen?

Code:

public Bitmap curFrameImage(byte[] data, Camera camera)
{
    Camera.Parameters parameters = camera.getParameters();
    int imageFormat = parameters.getPreviewFormat();

    if (imageFormat == ImageFormat.NV21)
    {
        YuvImage img = new YuvImage(data, ImageFormat.NV21, prevSizeW, prevSizeH, null);
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        img.compressToJpeg(new android.graphics.Rect(0, 0, img.getWidth(), img.getHeight()), 50, out);
        byte[] imageBytes = out.toByteArray();
        return BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.length);
    }
    else
    {
        Log.i(TAG, "Preview image not NV21");
        return null;
    }
}

Das endgültige Bildformat muss Bitmap sein, damit ich es dann bearbeiten kann. Ich habe versucht, Camera.Parameters.setPreviewFormat auf RGB_565 zu setzen, konnte der Kamera jedoch keine Kamera-Parameter zuweisen. Ich habe auch gelesen, dass NV21 das einzige verfügbare Format ist. Ich bin mir nicht sicher, ob es möglich ist, in diesen Formaten eine Lösung zu finden.

Danke im Voraus

Antworten auf die Frage(6)

Ihre Antwort auf die Frage