Guest User

Untitled

a guest
Mar 20th, 2012
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.76 KB | None | 0 0
  1. #!/bin/bash
  2. x=32 #ширина фото
  3. y=24 #высота фото
  4. n=1000 # порог проверки фото (от 0 до x*y) - каждый N пиксель будет взят для подсчета
  5. max=100 #максимальный "цвет" (от 0 до 255)
  6. sleep=60 #ожидание, перед повторением операции
  7. maxbright=250 #максимальная яркость
  8. minbright=30 #минимальная яркость
  9. #while [ 1 ]; do #бесконечный цикл
  10. # ffmpeg -f video4linux2 -s ${x}x${y} -i /dev/video0 -f image2 /tmp/snapshot.jpg 2>/dev/null #делаем скрин
  11. notify-send "Вызвана автонастройка яркости дисплея" "Сейчас будет автоматически выставлена яркость дисплея. \n \nНа секунду погаснет экран."
  12. sleep 3
  13. /home/gogasan/.scripts/bksw.sh
  14. ffmpeg -f video4linux2 -s ${x}x${y} -i /dev/video0 -f image2 /tmp/snapshot.jpg
  15. /home/gogasan/.scripts/bksw.sh
  16. convert /tmp/snapshot.jpg -colorspace gray /tmp/snapshot.jpg #обесцвечиваем его
  17. echo "image processing done"
  18. killall notify-osd
  19. sum=0
  20. count=0
  21. let "s = x*y" #всего пикселей
  22. 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, грубо говоря. Цвет то серый
  23. for i in `seq 0 $n $s`; #для каждого N-го
  24. do
  25. #переводим цвет из 16-ричной в десятичную запись
  26. color1=`echo ${color[i]} | cut -c1-1`
  27. color2=`echo ${color[i]} | cut -c2-2`
  28. case "$color1" in
  29. "A" ) color1=10;;
  30. "B" ) color1=11;;
  31. "C" ) color1=12;;
  32. "D" ) color1=13;;
  33. "E" ) color1=14;;
  34. "F" ) color1=15;;
  35. esac
  36. case "$color2" in
  37. "A" ) color2=10;;
  38. "B" ) color2=11;;
  39. "C" ) color2=12;;
  40. "D" ) color2=13;;
  41. "E" ) color2=14;;
  42. "F" ) color2=15;;
  43. esac
  44. let "rgbcolor = color1*16+color2"
  45. let "sum = sum+rgbcolor" #сумма "цветов". Потом поделим на количество и получим средний цвет
  46. let "count = count+1" #считаем количество
  47.  
  48. done
  49. echo "for complete"
  50.  
  51. let "avcolor = sum/count" #средний цвет
  52. echo "Цвет: $avcolor" #раскомментировать для просмотра яркости при максимальном освещении (чтобы вписать в max)
  53. let "bright=avcolor*100/$max" #яркость
  54. #проверка на максимальную и минимальную яркость
  55. if [ $bright -gt $maxbright ]; then
  56. bright=$maxbright
  57. fi
  58. if [ $bright -lt $minbright ]; then
  59. bright=$minbright
  60. fi
  61. echo `expr $bright` |more >> /sys/class/backlight/pwm-backlight/brightness
  62. # xbacklight -set $bright #устанавливаем яркость экрана
  63. echo "Установлена яркость: $bright"
  64. rm /tmp/snapshot.jpg
  65. notify-send "Вызвана автонастройка яркости дисплея" "Текущая яркость: $bright."
  66. sleep 3
  67. killall notify-osd
  68. # sleep $sleep #спим
  69. #done
Advertisement
Add Comment
Please, Sign In to add comment