Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!
0 Пользователей и 1 Гость просматривают эту тему.
Цитата: s1gma от 10 Апреля 2012, 14:57:17А не проще модуль для ядра написать, который напрямую считывает изображение с камеры и меняет яркость. +такой способ может быть лишен недостатков в виде занятости камеры.Какую глупость сейчас сказали, осознаёте?
А не проще модуль для ядра написать, который напрямую считывает изображение с камеры и меняет яркость. +такой способ может быть лишен недостатков в виде занятости камеры.
#!/bin/bashx=320 #ширина фотоy=240 #высота фотоn=1000 # порог проверки фото (от 0 до x*y) - каждый N пиксель будет взят для подсчетаmax=40 #максимальный "цвет" (от 0 до 255)hisbright=100h=0while [ 1 ]; doif [ on_ac_power ];thenminbright=30 #минимальная яркостьmaxbright=100 #максимальная яркостьsleep=20;elseminbright=20 #минимальная яркостьmaxbright=75 #максимальная яркостьsleep=60;fi ffmpeg -f video4linux2 -s ${x}x${y} -i /dev/video0 -f image2 /tmp/snapshot.jpg 2>/dev/null #делаем скрин convert /tmp/snapshot.jpg -colorspace gray /tmp/snapshot.jpg #обесцвечиваем его sum=0 count=0 let "s = x*y" #всего пикселей color=(`convert /tmp/snapshot.jpg [${x}x${y}+0+0] -depth 8 txt: | tail -n +2 | sed -n 's/^.*\(#[^ ]*\).*$/\1/p' | cut -c2-3`); #массив цветов пикселей, у которых взял только R из RGB, грубо говоря. Цвет то серый for i in `seq 0 $n $s`; #для каждого N-го do #переводим цвет из 16-ричной в десятичную запись color1=`echo ${color[i]} | cut -c1-1` color2=`echo ${color[i]} | cut -c2-2` case "$color1" in "A" ) color1=10;; "B" ) color1=11;; "C" ) color1=12;; "D" ) color1=13;; "E" ) color1=14;; "F" ) color1=15;; esac case "$color2" in "A" ) color2=10;; "B" ) color2=11;; "C" ) color2=12;; "D" ) color2=13;; "E" ) color2=14;; "F" ) color2=15;; esac let "rgbcolor = color1*16+color2" let "sum = sum+rgbcolor" #сумма "цветов". Потом поделим на количество и получим средний цвет let "count = count+1" #считаем количество done let "avcolor = sum/count" #средний цвет #echo "Цвет: $avcolor" #раскомментировать для просмотра яркости при максимальном освещении (чтобы вписать в max) let "bright=avcolor*100/$max" #яркость #проверка на максимальную и минимальную яркость if [ $bright -gt $maxbright ]; then bright=$maxbright fi if [ $bright -lt $minbright ]; then bright=$minbright fi reallight=`xbacklight | sed 's/\./ /g' | awk '{print $1}'` let "brightM = $hisbright + 7" let "brightm = $hisbright - 7" test $brightM -gt $bright && M=1 || M=0 test $brightm -lt $bright && m=1 || m=0 h=0 trap " h=1 if [ on_ac_power ]; then p=1 ; else p=0 ; fi " SIGUSR1 trap "h=0" SIGUSR2 if ([ $M = 0 ] || [ $m = 0 ]) && [ h=0 ] ; then xbacklight -set $bright #устанавливаем яркость экрана hisbright=$bright sed 's/\./ /g' | awk '{print $1}' echo $m $M $reallight $h $hisbright $reallight sleep $sleep; #спим else echo "В пролете!" while [ $q=0 || $h=0 ] ; do test on_power_ac != $p && h=0 q=1 || h=1; trap "h=0" SIGUSR2 done sleep $sleep fi; done
#!/bin/bash if [ on_ac_power ]; then minbright=30 #минимальная яркость maxbright=100 #максимальная яркость sleep=20; else minbright=20 #минимальная яркость maxbright=75 #максимальная яркость sleep=60; fi x=320 y=240 n=1000 max=40 hisbrihgt=100 h=1 reallight=`xbacklight | sed 's/\./ /g' | awk '{print $1}'` while [ $h ]; do trap " h=0 if [ on_ac_power ]; then p=1 ; else p=0 ; fi " SIGUSR1 trap "h=1" SIGUSR2 let "brightM = $hisbright + 7" let "brightm = $hisbright - 7" if [ on_ac_power -ne $p ]; then h=1; fi ffmpeg -f video4linux2 -s ${x}x${y} -i /dev/video0 -f image2 /tmp/snapshot.jpg 2>/dev/null convert /tmp/snapshot.jpg -colorspace gray /tmp/snapshot.jpg sum=0 count=0 let "s = x*y" color=(`convert /tmp/snapshot.jpg [${x}x${y}+0+0] -depth 8 txt: | tail -n +2 | sed -n 's/^.*\(#[^ ]*\).*$/\1/p' | cut -c2-3`); for i in `seq 0 $n $s`; do color1=`echo ${color[i]} | cut -c1-1` color2=`echo ${color[i]} | cut -c2-2` case "$color1" in "A" ) color1=10;; "B" ) color1=11;; "C" ) color1=12;; "D" ) color1=13;; "E" ) color1=14;; "F" ) color1=15;; esac case "$color2" in "A" ) color2=10;; "B" ) color2=11;; "C" ) color2=12;; "D" ) color2=13;; "E" ) color2=14;; "F" ) color2=15;; esac let "rgbcolor = color1*16+color2" let "sum = sum+rgbcolor" let "count = count+1" let "avcolor = sum/count" let "bright=avcolor*100/$max" if [ $bright -gt $maxbright ]; then bright=$maxbright fi if [ $bright -lt $minbright ]; then bright=$minbright fi test $brightM -gt $bright && M=1 || M=0 test $brightm -lt $bright && m=1 || m=0 if [ $M = 0 ] || [ $m = 0 ]; then xbacklight -set $bright hisbright=$bright sed 's/\./ /g' | awk '{print $1}' fi sleep $sleep; done
~# /home/ss/"Рабочий стол"/.webcamlight.sh/home/ss/Рабочий стол/.webcamlight.sh: строка 71: ошибка синтаксиса: неожиданный конец файла
Код: [Выделить]~# /home/ss/"Рабочий стол"/.webcamlight.sh/home/ss/Рабочий стол/.webcamlight.sh: строка 71: ошибка синтаксиса: неожиданный конец файлаWTF!?
Страница сгенерирована за 0.069 секунд. Запросов: 25.