Die Vorschau von Android Camera2 ist gestreckt

Sep 13 2020

Ich versuche, die Camera2-API zu lernen, und habe eine einfache Kamera-App nur zum Aufnehmen von Bildern erstellt. Das Problem besteht jedoch darin, dass die Vorschau für einige Auflösungen gestreckt ist. Ich habe verschiedene Beiträge durchgesehen und alle haben darauf hingewiesen, dass mein Seitenverhältnis möglicherweise falsch ist, aber ich habe das von Google empfohlene AutoFitTextureView mit dem richtigen Seitenverhältnis verwendet, obwohl meine Vorschau gestreckt ist. Ich habe einige Open-Source-Kamera-Apps aus dem Playstore heruntergeladen und einige hatten auch das gleiche Problem mit meiner Frontkamera (AUSSER OFFENE KAMERA), aber der lustige Teil ist, dass ich dieselbe App auf einem anderen Gerät verwendet habe und die Vorschau absolut perfekt war. Also entschied ich mich schließlich, meine App mit verschiedenen Auflösungen zu testen und die Ergebnisse zu beobachten, aber ich konnte kein Muster finden. Kann mir bitte jemand helfen, einen Sinn daraus zu machen?

my device display size is 720x1280
Front camera results: 
SurfaceTexture        AutoFitTextureView         Result
buffer size           size       
2576x1932             720x960                    Normal
2560x1440             720x1280                   Normal
2048x1536             720x960                    Normal
2048x1152             720x1280                   Normal
1920x1920             720x720                    Normal
1920x1080             720x1280                   Normal
1440x1080             720x960                    Horizontally Stretched
1280x720              720x1280                   Horizontally Stretched
1072x1072             720x720                    Normal
960x720               720x960                    Normal
720x480               720x1080                   Horizontally Stretched
640x480               720x960                    Horizontally Stretched
352x288               720x880                    Normal
320x240               720x960                    Normal
256x144               720x1280                   Horizontally Stretched
176x144               720x880                    Normal

Antworten

1 WebDiva Oct 04 2020 at 22:25

Camera2 ist als Anfänger sehr schwer zu lernen. Erwägen Sie die Verwendung von Kamerabibliotheken, die die meisten Teile ausführen. Hier ist eine der besten, die ich gefunden habe:https://camerakit.io/docs. Es ist wirklich einfach und wird alle Probleme lösen, mit denen Sie gerade konfrontiert sind.
(Beachten Sie, dass ich dieses Projekt nicht besitze und es sowieso nicht bewerbe. Ich habe die camera2-API ausprobiert und es ist wirklich schwierig, weshalb ich eine einfachere Lösung vorgeschlagen habe.

EddyTalvala Oct 05 2020 at 07:13

Es ist tatsächlich möglich, dass dies ein Gerätefehler ist - die Kameraimplementierung wird von der vollen Sensorgröße aus falsch skaliert. Es kommt häufiger bei ungewöhnlichen Größen vor, die die meisten Apps nicht verwenden.

In Ihrem Fall ist es wahrscheinlich, dass 1440 x 1080 von einem Teil der Kamera-Pipeline wie 1920 x 1080 behandelt werden, was zu einer Dehnung führt. Manchmal kann dies behoben werden, indem eine zweite Ausgabe (z. B. JPEG) mit einer anderen Auflösung (oder manchmal sogar dieselbe) hinzugefügt wird.

Natürlich ist es immer noch möglich, dass Ihr Code (oder die AutoFitTextureView) einen logischen Fehler enthält. Es ist jedoch schwierig, nützliche Ratschläge zu geben - es geht darum, das gesamte Layout zu überprüfen und die Mathematik Schritt für Schritt zu skalieren.

Sie können auch die offizielle Kamera-Support-Bibliothek von Google, CameraX , ausprobieren . Es befindet sich in der Beta-Phase und eignet sich für grundlegende Anwendungsfälle wie Vorschau, Standbildaufnahme und Bildanalyse.