답변:
이전 시도 에서 개선되었습니다 .
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
이 접근 방식의 두 가지 문제 : 카메라가 어두운 곳에서는 제대로 작동하지 않아서 4-5 사이의 비트를 건너 뛸 수 있기 때문에 적어도 내 웹캠에서는 디스플레이 밝기가 4보다 낮아지지 않습니다. 어쨌든,
사용 방법은 다음과 같습니다.
sudo apt-get install python-opencv
~/test.py
python test.py
평균 밝기 대신 작은 썸네일의 최대 밝기를 얻습니다 (이것은 죽은 픽셀 문제를 피하고 더 빠르게 만듭니다). 그리고 적어도 조명과 카메라의 조합으로 인해 잘 작동합니다!
시도 해봐 (:
highgui
에서 stackoverflow.com/questions/30684661/... . 다른 방법이 있습니까?
F.Lux가 이전에했던 것처럼 지리적 위치에 따라 화면 온도를 변경하는 RedShift 프로젝트를 살펴보십시오.
설치 및 사용 방법에 대한 지침은 웹 사이트에 잘 정리되어 있으며 하드웨어 및 모니터에 따라 RedShift가 제공하는 멋진 효과로 눈을 "새로 고침"처럼 느낄 수 있습니다.
PPA를 추가하려면 키보드에서 Ctrl+ Alt+ T를 눌러 터미널을 엽니 다. 열리면 아래 명령을 실행하십시오.
sudo add-apt-repository ppa:fantasyleague0629/wildguppy
그런 다음 다음을 통해 WildGuppy를 설치하십시오.
sudo apt-get update; sudo apt-get install wildguppy
우분투 14.04, 우분투 13.10, 우분투 13.04, 우분투 12.10 및 우분투 12.04에서 작동합니다.
시작할 때 WildGuppy를 실행 시키십시오.
구성 파일을 편집하려면 명령을 실행하십시오.
sudo gedit ~/.config/autostart/wildguppy-gtk.desktop
프롬프트가 표시되면 비밀번호를 입력하십시오. 터미널은 입력 할 때 비밀번호를 표시하지 않으므로 입력하고 Enter 키를 누르십시오.
파일이 열리면 아래 내용을 붙여서 저장하십시오.
[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
. 따라서 모든 배포판에서이 패키지를 사용할 수 있습니다! 건배!
OpenCV를 사용하여 C 도구를 만들었습니다. https://launchpad.net/brightness 에서 찾을 수 있습니다 (직접 컴파일해야 함). 도움이 되길 바랍니다.
https://github.com/Wandersalamander/Dimmer 를 사용 하면 요청한 내용을 정확하게 수행 할 수 있습니다.
이것은 나를 위해 작동합니다 :
#!/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)
이 작업을 수행하는 C 앱을 개발했습니다. https://github.com/goglecm/AutoBrightnessCam을 참조 하십시오 .
fswebcam
사진을 찍는 데 사용 하고 systemd
자동으로 시작 하도록 구성 할 수 있으며 랩톱의 방전 여부를 감지합니다 (그런 다음 시작).