Jawaban:
Saya telah meningkatkan upaya saya sebelumnya :
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
Dua masalah dengan pendekatan ini: Kecerahan tampilan, setidaknya dengan webcam saya, tidak pernah lebih rendah dari empat, karena kamera tidak berfungsi dengan baik dalam kegelapan, dan mungkin sedikit melompati antara empat dan lima. Bagaimanapun,
Ini cara menggunakannya:
sudo apt-get install python-opencv
~/test.py
python test.py
Alih-alih kecerahan rata-rata, saya sekarang mendapatkan kecerahan maksimum dari tumbnail kecil (ini untuk menghindari masalah pixel mati dan membuatnya lebih cepat). Dan setidaknya dengan kombinasi lampu dan kamera saya, ini bekerja dengan baik!
Cobalah (:
highgui
dari stackoverflow.com/questions/30684661/… . Apakah ada cara lain?
Lihatlah proyek RedShift, yang mengubah suhu layar berdasarkan lokasi geografis Anda seperti yang dilakukan F.Lux sebelumnya.
Petunjuk tentang cara menginstal dan cara menggunakannya didokumentasikan dengan baik di situs web dan, tergantung pada perangkat keras dan monitor Anda, Anda dapat merasakan mata Anda seperti "segar" oleh efek bagus yang dicapai oleh RedShift.
Untuk menambahkan PPA, tekan Ctrl+ Alt+ Tpada keyboard untuk membuka terminal. Saat terbuka, jalankan perintah di bawah ini:
sudo add-apt-repository ppa:fantasyleague0629/wildguppy
Kemudian instal WildGuppy melalui:
sudo apt-get update; sudo apt-get install wildguppy
Berfungsi pada Ubuntu 14.04, Ubuntu 13.10, Ubuntu 13.04, Ubuntu 12.10 dan Ubuntu 12.04.
Jadikan WildGuppy berjalan saat startup:
Jalankan perintah untuk mengedit file konfigurasi.
sudo gedit ~/.config/autostart/wildguppy-gtk.desktop
Ketikkan kata sandi Anda saat diminta. Perhatikan bahwa terminal tidak akan menampilkan kata sandi Anda saat mengetik, ketikkan saja dan tekan enter.
Ketika file dibuka, rekatkan konten di bawah ini dan simpan.
[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
. Jadi Anda bisa menggunakan paket ini di distro apa saja! Tepuk tangan!
Saya juga membuat alat C untuk itu, menggunakan OpenCV. Anda dapat menemukannya di https://launchpad.net/brightness (Anda harus mengompilasinya sendiri). Saya harap ini akan membantu Anda.
Anda dapat menggunakan https://github.com/Wandersalamander/Dimmer yang melakukan apa yang Anda minta.
Ini bekerja untuk saya:
#!/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)
Saya telah mengembangkan aplikasi C yang melakukan ini. Lihat https://github.com/goglecm/AutoBrightnessCam .
Ini digunakan fswebcam
untuk mengambil gambar, dapat dikonfigurasikan dengan systemd
untuk memulai secara otomatis dan mendeteksi apakah laptop sedang dipakai (kemudian mulai).