Wie bekomme ich 720p Android Kamera Vorschau Daten?

8

Ich möchte die Kameravorschau für die Bilderkennung verwenden. Für mein Dazu muss die Vorschauauflösung so hoch wie möglich sein (und gleichzeitig die Vorschau für den Benutzer anzeigen).

Ich habe eine Preview-Klasse erstellt, die SurfaceView erweitert und die Vorschaugröße auf 1280x720. Ich habe einen PreviewCallBack hinzugefügt, um das Live zu bekommen Bild:

%Vor%

Mein Byte-Array b ist 1382400 Byte und mein Die Funktion CameraPreviewCallback.onPreviewFrame () empfängt diese 1382400 Bytes - aber nur das erste 497664 Byte enthält Daten (passend zu a 768x432 Auflösung (HTC Desire)).

Ich habe das auf verschiedenen Geräten getestet, alle mit Display-Auflösungen von 800x480 (HTC Wunsch, LG Optimus 3D, Samsung Galaxy S2, Samsung Galaxy Tab, ...). Das einzige Gerät, für das mein Code funktioniert, ist ein HTC Desire HD.

Weiß jemand, wie man die volle 720p-Auflösung als Byte erhält? Array? "Etwas" scheint die Vorschauauflösung auf das Smartphone-Display zu reduzieren.

Grüße

Joern

    
Jörn Buitink 05.12.2011, 12:43
quelle

2 Antworten

8

Sie können keine zufällige Auflösung für eine Kameravorschau verwenden.

Bestimmte Geräte unterstützen nur bestimmte Auflösungen. Sie können diese über Camera.Parameters.getSupportedPreviewSizes() ¹ abfragen. Wenn Ihr Gerät 1280x720 in dieser Liste nicht zurückgibt, können Sie es nicht verwenden. Wählen Sie stattdessen eine unterstützte Auflösung, die der gewünschten Auflösung nahe kommt.

¹ Sie sollten dies im Allgemeinen tun, bevor Sie eine Auflösung verwenden, 720p oder nicht

    
user658042 05.12.2011 12:55
quelle
2

Obwohl dies eine alte Frage ist, ist die Antwort unverändert: Die Liste der unterstützten Vorschaugrößen für jedes Gerät ist nicht korrekt. Die Standardvorschaugröße ist nach meinem besten Wissen immer gültig. Andere Größen scheinen von Fall zu Fall am besten zu funktionieren - Sie können ziemlich sicher sein, dass eine Standardvorschaugröße auf dem Bildschirm nicht falsch aussieht, aber das ist alles. Insbesondere wird dieses Byte-Array nicht skaliert, um größere Bildformate aufzunehmen, selbst wenn sie "unterstützt" werden, und nur einige der "unterstützten" Vorschaugrößen werden bei Auflösung und ohne Grün- / Rosa-Verzerrung richtig gerendert. p>

Der einzige zuverlässige Weg, um zu wissen, dass die Auflösung korrekt ist und die Daten von onPreviewFrame () gut sind, besteht darin, dies manuell zu testen.

    
wintermute92 08.08.2014 20:21
quelle