Yanıtlar:
Önceki girişimi geliştirdim :
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
Bu yaklaşımla ilgili iki sorun: En azından web kameramla ekran parlaklığı hiçbir zaman dörtten aşağı düşmüyor, çünkü kamera karanlıkta iyi çalışmıyor ve dört ile beş arasında biraz atlayabilir. Neyse,
Bu nasıl kullanılacağı:
sudo apt-get install python-opencv
~/test.py
python test.py
Ortalama parlaklık yerine, şimdi küçük bir tumbnail'in maksimum parlaklığını elde ediyorum (bu, ölü piksel sorunlarından kaçınmak ve daha hızlı yapmaktır). Ve en azından benim ışık ve kamera kombinasyonumla, oldukça iyi çalışıyor!
Bir şans ver (:
F.Lux'un eskiden yaptığı gibi coğrafi konumunuza göre ekran sıcaklığını değiştiren RedShift projesine bir göz atın.
Kurulum ve nasıl kullanılacağına ilişkin talimatlar web sitesinde iyi bir şekilde belgelenmiştir ve donanımınıza ve monitörünüze bağlı olarak, RedShift tarafından elde edilen güzel efektle gözlerinizi "tazelenmiş" gibi hissedebilirsiniz.
PPA'yı eklemek için terminali açmak için klavyedeki Ctrl+ Alt+ tuşlarına basın T. Açıldığında, aşağıdaki komutu çalıştırın:
sudo add-apt-repository ppa:fantasyleague0629/wildguppy
Ardından WildGuppy'ı şu şekilde yükleyin:
sudo apt-get update; sudo apt-get install wildguppy
Ubuntu 14.04, Ubuntu 13.10, Ubuntu 13.04, Ubuntu 12.10 ve Ubuntu 12.04 ile çalışır.
WildGuppy'ın başlangıçta çalışmasını sağlayın:
Config dosyasını düzenlemek için komutu çalıştırın.
sudo gedit ~/.config/autostart/wildguppy-gtk.desktop
İstendiğinde şifrenizi yazın. Yazarken terminalin şifrenizi göstermeyeceğini unutmayın, sadece yazın ve enter tuşuna basın.
Dosya açıldığında, içeriğin altına yapıştırın ve kaydedin.
[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
. Böylece bu paketi herhangi bir dağıtımda kullanabilirsiniz! Şerefe!
Ayrıca OpenCV kullanarak bir C aracı yaptım. Bunu https://launchpad.net/brightness adresinde bulabilirsiniz (kendi başınıza derlemeniz gerekir). Umarım bu sana yardımcı olur.
Tam olarak istediğinizi yapan https://github.com/Wandersalamander/Dimmer kullanabilirsiniz .
Bu benim için çalışıyor:
#!/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)
Bunu yapan bir C uygulaması geliştirdim. Bkz. Https://github.com/goglecm/AutoBrightnessCam .
Bu kullanır fswebcam
fotoğraf çekmek için, yapılandırılabilir systemd
otomatik başlatmak için ve dizüstü bilgisayar (o zaman devreye giriyor) boşaltma olup olmadığını tespit eder.