Android 5.0 Falsche Schnittbereiche auf der Vorschauoberfläche und erfasstes Standbild

Ich versuche, einen digital gezoomten Rahmen auf Android 5.0 mit Kamera2-Schnittstelle zu bekommen. Das entsprechende Dokument für diese Funktionalität ist developer.android.com / camera2 / captureRequest

Oberfläche in meiner Anwendung verwendet:

SurafaceView (1920 x 1080, Seitenverhältnis 16: 9)ImageReader (3264 x 2448, Seitenverhältnis 4: 3)

Die Sensorgröße der Kamera beträgt 3280 x 2464 (Seitenverhältnis 4: 3)

Crop Region, die ich vom Sensor erhalten möchte, ist:

Rect zoomCropPreview = new Rect(1094, 822, 2186, 1642); //(1092x820, 4:3 aspect ratio)

Ich setze dieses Rect als Parameter für die Vorschau-Anfrage:

previewRequestBuilder.set(CaptureRequest.SCALER_CROP_REGION, zoomCropPreview);
captureSession.setRepeatingRequest(previewRequestBuilder.build(), null, null);

Und um ein Standbild aufzunehmen:

stillRequestBuilder.set(CaptureRequest.SCALER_CROP_REGION, zoomCropPreview);

captureSession.capture(stillRequestBuilder.build(), new captureListener() , null);

Erwartete Ergebnisse

Coz Zuschneide-Rechteck hat ein Verhältnis von 4: 3, dann sollte die Vorschau vertikal zugeschnitten werden (Letterbox)Das Standbild sollte ein exakter Ausschnittbereich sein.Vorschau und Standbild sollten auf demselben Szenenpunkt zentriert sein und sich nur in den vertikalen Rändern unterscheiden.

Echtes Ergebnis:

Vorschau und Standbild zeigen auf eine andere Szene, die vertikal verschoben zu sein scheint. Schau dir Bilder anhängen an.

Was mache ich falsch

Antworten auf die Frage(1)

Ihre Antwort auf die Frage