Gibt es Möglichkeiten, die Verschlusszeit mit dem Zugriff auf die Android NDK-Kamera zu verkürzen?

Ich habe eine Android-Anwendung geschrieben, die eine Live-Vorschau von der Kamera aufzeichnet. Es ist wichtig, eine kurze Verschlusszeit zu haben, die mindestens konstant sein sollte.

Zur Zeit benutze ich den folgenden Code, um eine kurze Verschlusszeit zu erreichen:

Parameters params = camera.getParameters();
params.setSceneMode(Parameters.SCENE_MODE_SPORTS);
params.setWhiteBalance(Parameters.WHITE_BALANCE_DAYLIGHT);
params.setFlashMode(Parameters.FLASH_MODE_OFF);
params.setFocusMode(Parameters.FOCUS_MODE_INFINITY);

params.setPreviewFpsRange(9000, 29453);
params.setPreviewFrameRate(29453);
params.setJpegQuality(100);
params.setPreviewFormat(ImageFormat.NV21);

params.setPreviewSize(1280,720);
params.setAntibanding(Parameters.ANTIBANDING_OFF);
params.setExposureCompensation(params.getMinExposureCompensation());
params.set("iso", 1250);
camera.setParameters(params);

Der setSceneMode () scheint von der Firmware meines Telefons nicht unterstützt zu werden (getSupportedSceneModes gibt eine leere Liste zurück). Die "ISO" -Einstellung hat evtl. keine Auswirkung (habe das Bild noch nicht angeschaut, nur die Bildrate berechnet). Hab diesen Code einfach irgendwo gefunden und benutzt ... vielleicht ist es nur die falsche Zeichenfolge?

Was bisher passiert ist: Die Bildrate ändert sich zwischen 9 und 29.453 fps, was der einzige unterstützte Bildratenbereich ist. Soparams.setPreviewFpsRange(29453, 29453); funktioniert auch nicht. Die Bildrate ist bei guten Lichtverhältnissen (normaler Tag, innen, auf das Fenster gerichtet) hoch (20-30 fps) und wird bei mittlerem / schwachem Licht (Tageslicht, innen, direkt vom Fenster weg) sehr niedrig (8-10 fps). Bedingungen.

Genauer gesagt: Ich brauche keine hohe Bildrate, sondern eine niedrige Verschlusszeit. Die gesammelten Daten sollen für die Indoor-Navigation verwendet werden (oder: Indoor-Lokalisierung in einem ersten Schritt). Die Anwendung muss Bilder aufnehmen, während eine Person normal läuft, ohne dass die Person sich darum kümmert, wie sie das Telefon trägt. Die Person könnte sogar laufen oder das Telefon "schwingen" (wie Sie normalerweise Ihre Arme bewegen würden, wenn Sie gehen). So kommt es in der Regel zu viel "Bewegungsunschärfe", sobald die Verschlusszeit zu lang ist. Die Situation unterscheidet sich erheblich von der Situation "Ich möchte ein Foto machen", in der das Foto versucht, die Kamera ruhig zu halten. Wir wollen eigentlich keine "guten Fotos" machen, sondern von Zeit zu Zeit ein paar Wandkanten erkennen. Ich erwarte viel "Rauschen" im Bild, aber das funktioniert hoffentlich trotzdem ...

Die Idee ist, dass mit dem NDK möglicherweise mehr Kontrolle über die Kameraparameter möglich ist. Hat jemand Erfahrungen mit dem NDK und kann mir bei jedem Wetter antworten, dass es sich lohnt, es auszuprobieren?

Zusatzinfo: Ich benutze ein HTC Desire Z (auch "T-Mobile G2" oder "HTC Vision" genannt) als Testgerät.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage