Android: Helligkeit (Lichtmenge) in der Umgebung des Telefons mit der Kamera ermitteln?

8

Folgendes gilt für das Android-Betriebssystem.

Ich versuche abzuschätzen, wie dunkel (oder hell) es in dem Raum ist, in dem sich das Telefon mit der Kamera befindet.

Die Idee ist, dass die Kamera eine bestimmte Helligkeitsstufe zurückgibt, mit der ich die Lichtmenge in der Umgebung des Telefons bestimmen kann.

Meine Frage ist einfach: Wie benutze ich die Kamera (entweder die Vorderseite der Rückkamera), um diese Helligkeit (die "Lichtmenge") zu erhalten?

Vielen Dank im Voraus.

    
Tom 19.01.2011, 17:05
quelle

5 Antworten

18

So registrieren Sie einen Listener auf dem Lichtsensor:

%Vor%

BEARBEITEN: Danke an @AntiMatter für die vorgeschlagenen Updates.

Text & Tabellen: SensorEventListener SensorManager SensorEvent Sensor

    
kcoppock 19.01.2011, 18:15
quelle
5

Wenn Sie die Kamera benutzen wollten, zum Beispiel wenn die anderen Sensoren nicht verfügbar wären, würde ich

  1. Stellen Sie die automatische Belichtung der Kamera auf "aus" und stellen Sie die Belichtungskorrektur auf 0
  2. ein
  3. Legen Sie die Aufnahme auf die niedrigste Qualität / Größe fest (warum sollten Sie sich mit mehr beschäftigen)
  4. Mache das Vorschaufenster so klein wie möglich (vielleicht könntest du es sogar auf unsichtbar setzen und trotzdem einen Rahmen zur Analyse bekommen, nicht sicher)
  5. Erhalte ein Bildvorschau-Bild, aber diese sind im Yuv-Format, so dass 2.1 und früher einen Übersetzer brauchen.

Dann würde ich das Histogramm für die Bildhelligkeit berechnen und nach rechts (am hellsten) nach links (am dunkelsten) arbeiten, bis Sie den ersten signifikanten Wert höher als N gefunden haben, der die Helligkeit Ihrer Szene bestimmen würde.

Nachdem ich das alles gesagt habe, würde ich es nicht tun, da Sie für viele Ausreißer-Situationen testen müssten.

Natürlich nicht sicher, was Sie verwenden Fall ist, wenn es eine Situation ist, wo Sie es verwenden, um "Helligkeit" in einem Auto einzustellen, dann nach vorne gerichtete Kamera würde durch Scheinwerfer etc.

betroffen sein

Jedenfalls ein interessantes Problem, aber es scheint eine Menge Arbeit für so wenig Gewinn zu sein, besonders bei den meisten anständigen Hardwareteilen mit diesen Sensoren.

    
Idistic 18.06.2011 05:10
quelle
1

Meine Antwort ist vielleicht zu unvollständig für eine Antwort, aber ich mag die Formatierung hier.

Außerdem ist meine Antwort nicht witzig, also hör nicht gleich auf zu lesen.

Natürlich müssen Sie zuerst ein Foto machen. Dann müssen Sie "Helligkeit" definieren. Ich habe den Algorithmus nicht, um das zu tun, aber ich denke, etwas ist schon gemacht worden. Vielleicht etwas wie:

Bestimmen Sie, welche Pixelwerte hell sind, welche dunkel sind und welche dazwischen liegen (und jede davon kann eine variable Helligkeitsmenge haben). Sie müssen dann diesen Algorithmus auf Ihr Foto anwenden, um einen Helligkeitswert zu erhalten.

Ja, das ist eine sehr kurze (35.000 Fuß) Sicht auf das Problem, aber es sollte Ihnen einige Ideen geben, wo Sie anfangen sollen.

[Bearbeiten]
Hier ist ein Ort zum Starten (der Android Dokumentation für Sensoren)
[/ edit]

    
KevinDTimm 19.01.2011 17:28
quelle
1

Die Verwendung der Kamera ist sinnlos, da die Kamera Belichtungszeit und Blende an das Umgebungslicht anpasst, so dass die aufgenommenen Bilder unabhängig vom tatsächlich verfügbaren Licht eine sehr ähnliche Gesamthelligkeit aufweisen (zumindest in einer idealen Welt).

Die Android API bietet Funktionen im SensorManager für den Zugriff auf die Hardware-Sensoren (Sie interessieren sich für den Sensor vom Typ TYPE_LIGHT). Ich bin mir jedoch nicht sicher, ob Sie sich auf den Zugriff auf diese Sensoren über die API verlassen können, obwohl sie vorhanden sein können (oder auch nicht).

    
jarnbjo 19.01.2011 17:55
quelle
0

Das große Problem bei der Suche nach der Helligkeit ist, herauszufinden, wie HTC es in ihrer camera.apk macht. Denn die vorrätige Android Camera App ist für Überbelichtung vor allem für die DINC schrecklich.

    
Nick 01.02.2011 18:18
quelle

Tags und Links