Eu melhorei minha tentativa anterior :
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
Dois problemas com essa abordagem: O brilho da tela, pelo menos com minha webcam, nunca fica abaixo de quatro, porque a câmera não funciona bem no escuro e pode pular um pouco entre quatro e cinco. De qualquer forma,
Isto é como usá-lo:
-
sudo apt-get install python-opencv
- Salve esse script em algum lugar, diga
~/test.py
- Executar via
python test.py
Em vez do brilho médio, agora estou obtendo o brilho máximo de uma pequena miniatura (isso é para evitar problemas com pixels mortos e torná-lo mais rápido). E pelo menos com minha combinação de luzes e câmera, funciona muito bem!
Experimente: (