Réponses:
J'ai amélioré ma tentative précédente :
import opencv
import opencv.highgui
import time
import commands
def get_image():
image = opencv.highgui.cvQueryFrame(camera)
return opencv.adaptors.Ipl2PIL(image)
camera = opencv.highgui.cvCreateCameraCapture(-1)
while 1:
image = get_image()
image.thumbnail((32, 24, ))
image = tuple(ord(i) for i in image.tostring())
x = int((int((max(image) / 256.0) * 10) + 1) ** 0.5 / 3 * 10)
cmd = ("sudo su -c 'echo " + str(x) +
" > /sys/devices/virtual/backlight/acpi_video0/brightness'")
status, output = commands.getstatusoutput(cmd)
assert status is 0
Deux problèmes avec cette approche: la luminosité de l'écran, au moins avec ma webcam, ne descend jamais en dessous de quatre, car l'appareil photo ne fonctionne pas bien dans l'obscurité, et il peut sauter un peu entre quatre et cinq. En tous cas,
Voici comment l'utiliser:
sudo apt-get install python-opencv
~/test.py
python test.py
Au lieu de la luminosité moyenne, j'obtiens maintenant la luminosité maximale d'une petite vignette (c'est pour éviter les problèmes de pixels morts et le rendre plus rapide). Et au moins avec ma combinaison de lumières et d'appareil photo, ça marche plutôt bien!
Essaie (:
highgui
de stackoverflow.com/questions/30684661/… . Y-a t'il une autre possibilité?
Jetez un œil au projet RedShift, qui modifie la température de l'écran en fonction de votre emplacement géographique comme le faisait F.Lux auparavant.
Les instructions d'installation et d'utilisation sont bien documentées sur le site Web et, en fonction de votre matériel et de votre moniteur, vous pouvez sentir vos yeux "rafraîchis" par l'effet agréable obtenu par RedShift.
Pour ajouter le PPA, appuyez sur Ctrl+ Alt+ Tsur le clavier pour ouvrir le terminal. Lorsqu'il s'ouvre, exécutez la commande ci-dessous:
sudo add-apt-repository ppa:fantasyleague0629/wildguppy
Installez ensuite WildGuppy via:
sudo apt-get update; sudo apt-get install wildguppy
Fonctionne sur Ubuntu 14.04, Ubuntu 13.10, Ubuntu 13.04, Ubuntu 12.10 et Ubuntu 12.04.
Faire fonctionner WildGuppy au démarrage:
Exécutez la commande pour modifier le fichier de configuration.
sudo gedit ~/.config/autostart/wildguppy-gtk.desktop
Tapez votre mot de passe lorsque vous y êtes invité. Notez que le terminal n'affichera pas votre mot de passe lors de la frappe, tapez simplement à l'esprit et appuyez sur Entrée.
Lorsque le fichier s'ouvre, collez le contenu ci-dessous et enregistrez-le.
[Desktop Entry]
Type=Application
Exec=wildguppy-gtk
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[en_US]=WildGuppy
Name=WildGuppy
Comment[en_US]=
Comment=
/opt/wildguppy/wildguppy.py
. Vous pouvez donc utiliser ce package dans n'importe quelle distribution! À votre santé!
J'ai également créé un outil C pour cela, en utilisant OpenCV. Vous pouvez le trouver sur https://launchpad.net/brightness (vous devez le compiler par vous-même). J'espère que cela vous aidera.
Vous pouvez utiliser https://github.com/Wandersalamander/Dimmer qui fait exactement ce que vous avez demandé.
Cela fonctionne pour moi:
#!/usr/bin/env python3
import subprocess, time
# webcam brightness if webcam doesn’t get any light
blackpoint = 0.05
# webcam brightness if webcam is fully exposed (e.g. sun at noon)
whitepoint = 0.92549
# Path to program that sets screen brightness. Takes float between 0 and 1 as
# a parameter. Should be whitelisted for sudo if this script is not run as
# root. Sample script:
#
# #!/bin/sh
# echo "($1 * 4882) / 1" | bc > /sys/class/backlight/intel_backlight/brightness
brightness_setter = "/home/bronger/bin/set_brightness.sh"
# it doen’t get any darker
minimal_brightness = 0.1
# in seconds
sleeping_time = 20
def get_brightness():
"""Returns webcam brightness as a float between 0 and 1 (boundaries
included)."""
fswebcam = subprocess.Popen(["fswebcam", "-q", "--no-banner", "--png", "0", "-"], stdout=subprocess.PIPE)
convert = subprocess.run(["convert", "png:-", "-colorspace", "gray", "-scale", "10%x10%",
"-format", "%[fx:image.maxima]", "info:"],
check=True, stdin=fswebcam.stdout, capture_output=True, text=True)
assert fswebcam.wait() == 0
brightness = float(convert.stdout)
brightness = (brightness - blackpoint) / (whitepoint - blackpoint)
brightness = max(0.0, min(1.0, brightness))
return brightness
old_brightness = None
while True:
brightness = get_brightness() ** 2
brightness = max(minimal_brightness, brightness)
if old_brightness is None or abs(brightness - old_brightness) > 0.2:
subprocess.run(["sudo", brightness_setter, str(brightness)], check=True)
old_brightness = brightness
time.sleep(sleeping_time)
J'ai développé une application C qui fait cela. Voir https://github.com/goglecm/AutoBrightnessCam .
Il permet fswebcam
de prendre des photos, peut être configuré avec systemd
pour démarrer automatiquement et détecte si l'ordinateur portable se décharge (puis il se déclenche).