Ce qui suit s'applique au système d'exploitation Android. P>
J'essaie d'estimer la sombre (ou la lumière) dans la pièce où le téléphone est situé à l'aide de la caméra. P>
L'idée est que la caméra peut renvoyer un certain niveau de luminosité que je peux utiliser pour déterminer la quantité de lumière dans les environs du téléphone. P>
Ma question est simple: comment puis-je utiliser la caméra (à l'avant de la caméra arrière) pour obtenir cette quantité de luminosité (la «quantité de lumière»)? P>
Merci d'avance. P>
5 Réponses :
Ma réponse peut être trop incomplète pour une réponse, mais j'aime le formatage ici. P>
En outre, ma réponse n'est pas facétieuse, alors n'arrêtez pas de lire tout de suite. P>
Bien sûr, d'abord, vous devrez prendre une photo. Ensuite, vous devrez définir la «luminosité». Je n'ai pas l'algorithme de le faire, mais je suppose que quelque chose comme ça a déjà été fait. Peut-être quelque chose comme: p>
Déterminez les valeurs de pixels lumineuses, qui sont sombres et qui sont entre les deux (et chacune d'elles peut avoir une quantité variable de luminosité). Vous devrez ensuite appliquer cet algorithme à votre photo pour obtenir une valeur de luminosité. P>
Oui, il s'agit d'une vue très courte (35 000 pieds) du problème, mais cela devrait vous donner quelques idées sur les endroits où commencer. P>
[modifier]
ici est un lieu de démarrage (la documentation Android pour les capteurs) de
[/ EDIT] P>
Merci, cela aide, peut-être que quelqu'un d'autre sera en mesure de se développer sur 1) le capteur de détection de jour de l'inBuild (cela conviendrait mieux à la caméra) 2) votre suggestion d'algorithme. Si le capteur de luminosité d'Inbuild ne peut pas être taraudé, je dois probablement utiliser votre approche.
Je dois croire que l'algorithme existe déjà, mais l'idée m'intriguait, alors j'ai donné un croquis rapide à clou de pouce de la façon dont cela pourrait être fait.
Fine, Downvote - mais donnez une raison pourquoi (surtout depuis que j'ai édité ma réponse à inclure comment accéder au capteur matériel)
Je ne comprends pas pourquoi quelqu'un vous a baissé. Votre réponse et votre mise à jour sont toutes deux utiles. S'il vous plaît upvote, les gens.
L'utilisation de la caméra est inutile, car l'appareil photo ajustera le temps d'exposition et l'ouverture à la lumière environnante, de sorte que les images enregistrées auront une luminosité globale très similaire indépendante de la lumière disponible réelle (au moins dans un monde idéal). p>
L'API Android Offre fonctionnalité dans le sensormanager pour accéder aux capteurs matériels (vous êtes intéressé par le capteur de type type_light). Je ne suis pas sûr de cependant que vous puissiez compter sur l'accès à ces capteurs à travers l'API, bien qu'ils puissent (ou non) être présents. P>
Merci pour les informations sur la caméra, je me demande si cela signifie en effet qu'un périphérique sans capteur de lumière ne peut estimer la luminosité de la pièce avec la caméra (comme méthode de secours).
Voici comment vous enregistrez un auditeur sur le capteur de lumière: edit: stry> Merci à @Antimatter pour les mises à jour suggérées. P> docs: strong>
SensOrvenventListener code>
sensormanager code>
SensAvension Code>
capteur code>
p> p >
Génial, ce capteur m'aidera beaucoup. Je ne suis pas sûr des appareils Howmany (en particulier les acteurs des médias d'Archos les moins chers) ont ce capteur mis en œuvre, mais cela fera pour l'instant. Merci.
Vous pouvez utiliser
getensensorlist (sensor.type_light); code>, puis vérifiez si la taille de la liste est supérieure à 0 pour voir si l'appareil dispose du capteur requis par programme.
Je comprends Kcoppock, je pensais à une alternative aux appareils de soutien qui ne le manquent pas. Cependant, c'est quelque chose que je dois me demander à l'avenir car je ne suis pas sûr s'il y a même besoin de cela. Merci encore.
Je reçois une erreur sur lightsensor.registerlistener (écouteur); code> - la méthode InscriptionListener (sensorevenTener) est indéfinie pour le capteur de type
@Antimatter J'ai mis à jour la réponse avec des changements par vos suggestions. :)
Le gros problème à vouloir clouer la luminosité est de comprendre comment HTC le fait dans leur caméra.apk. Parce que l'application Camera Android est horrible pour la surexposition, en particulier pour la DIP. P>
Si vous vouliez utiliser la caméra, par exemple si les autres capteurs n'étaient pas disponibles, je voudrais p>
Ensuite, je voudrais calculer l'histogramme pour la luminosité des images et la droite (la plus brillante) à gauche (DIMMEST) jusqu'à ce que vous trouviez la première valeur significative supérieure à N, qui déterminerait la luminosité de votre scène. p>
Ayant dit tout cela, je ne le ferais pas car vous auriez besoin de tester de nombreuses situations sur valeur. p>
Bien sûr que ce que vous utilisez le cas est, s'il s'agit d'une situation où vous l'utilisez pour ajuster la "luminosité" dans une voiture, la caméra orientée vers l'avant serait effectuée par des phares, etc. P>
De toute façon problème intéressant, mais semble être beaucoup de travail pour un si petit gain, en particulier avec la plupart des morceaux de matériel décents ayant ces capteurs p>
En ce qui concerne le point 3, dans mon expérience, la fenêtre d'aperçu de la caméra invisible ne fonctionne que si vous utilisez textureview CODE> et définissez son
windowmanager.layoutparams.alpha code> sur
0 < / code>.
En ce qui concerne le point 4, si vous utilisez un textureview code> comme aperçu de la caméra, vous pouvez simplement appeler
textureview.getbitmap code> pour obtenir le cadre actuel dans RVB.
Bien sûr, vous avez besoin d'API 14 (Android 4.0, je pense) à utiliser textureview code>.
La plupart (tous?) Les téléphones Android ont deux petits capteurs matériels utilisés pour "la détection du jour". Les commentaires de ces capteurs sont la manière dont votre téléphone contrôle la luminosité de l'écran lorsque vous définissez le paramètre sur la commande automatique. Je me demande si vous pouviez exploiter ces données. Ce serait plusieurs fois plus fiable.
Merci user432209, cela aiderait certainement. J'espère que ce capteur (qu'est-ce que l'on appelle?) Est disponible publiquement, peut-être que quelqu'un peut nous éclairer sur ce sujet.