Calise - usare la webcam come sensore di luminosità ambientale

Condividi con noi i tuoi progetti e guide personali
Rispondi
Avatar utente
smilzoboboz
Novello Arciere
Messaggi: 88
Iscritto il: 11 maggio 2010, 21:40
Località: Arcade (TV)
Contatta:

Calise - usare la webcam come sensore di luminosità ambientale

Messaggio da smilzoboboz » 6 maggio 2011, 16:17

Calise, acronimo di Camera Light Sensor, è un programma scritto in Python/C che permette di utilizzare una comune webcam come sensore di luminosità ambientale e, conseguentemente, cambiare il livello di retroilluminazione dello schermo secondo il valore ottenuto.

Il programma si compone di due "versioni", pensate per utilizzi diversi:
- interattiva: pesante sul sistema ma molto "precisa", effettua catture a ciclo continuo, utile solo nel caso di test e/o simili, comunque non pensata per l'utilizzo in background (è dotata anche di una GUI opzionale).
- servizio di sistema: estremamente leggera ma meno sensibile agli sbalzi repentini di luminosità ambientale, pensata per un utilizzo in background (consumi di cpu ed energia tanto bassi da essere trascurabili), ammette comunque esecuzioni manuali addizionali durante l'esecuzione.

Homepage del progetto: http://calise.sourceforge.net/
Pagina Sourceforge (bugtracker, feature requests e altro): http://sourceforge.net/projects/calise/

Per ogni informazione riguardo i primi passi con l'utilizzo del programma ho scritto un piccolo wiki in inglese il cui indirizzo è reperibile dalla homepage del progetto.

Per gli utenti Archlinux inoltre, sono disponibili due pacchetti AUR gestiti da me personalmente:
https://aur.archlinux.org/packages/calise/ (rilasci stabili)
https://aur.archlinux.org/packages/calise-git/ (versione in corso di sviluppo, in genere cmq "stabile")

Dovrebbe essere tutto.
Ultima modifica di smilzoboboz il 5 gennaio 2013, 2:33, modificato 3 volte in totale.

psykopear
Little John
Messaggi: 800
Iscritto il: 28 ottobre 2007, 22:20

Messaggio da psykopear » 9 maggio 2011, 9:31

Gran bel progetto, sto provando su ubuntu e funziona bene, in quanto a consumo cpu niente di eccessivo, fra l'1 e il 3% sul netbook con atom n450, la ram invece occupa un bel pò, sui 150-200mb circa, sarebbe da migliorare giusto quest'aspetto, comunque complimenti
Arch Linux. Ebbasta
"L'utopia è come l'orizzonte: cammino due passi, e si allontana di due passi. Cammino di dieci passi, e si allontana di dieci passi. E allora, a cosa serve l'utopia? A questo: serve per continuare a camminare."

Avatar utente
TheSaint
Robin Hood
Messaggi: 7748
Iscritto il: 8 settembre 2007, 7:43
Architettura: x86_64 (64bit)
Località: davanti al computer

Messaggio da TheSaint » 9 maggio 2011, 9:39

Impressionante :O :O
Non e' che si riesce anche a misurare la febbre a chi e' difronte?
Non sto scherzando, visto che si usa rilevare l' Infrarosso in aeroporti e per la digitalizzazione in 3D. :cool:
F the saint
12 anni da questo forum ;)

Avatar utente
veleno77
Moderatore
Messaggi: 6282
Iscritto il: 25 marzo 2008, 18:26
Architettura: x86 (32Bit)
Località: Torino
Contatta:

Messaggio da veleno77 » 9 maggio 2011, 9:51

ovviamente per la programmazione non posso aiutarti ma per testarlo potrei esserci
Se avete risolto il vostro problema, editate il primo post aggiungendo [Risolto] al titolo.
Problemi con Arch ? 1°Metodo-2°Metodo-3°Metodo
ArchWiki Translation Team - Cerchiamo traduttori!

Avatar utente
smilzoboboz
Novello Arciere
Messaggi: 88
Iscritto il: 11 maggio 2010, 21:40
Località: Arcade (TV)
Contatta:

Messaggio da smilzoboboz » 9 maggio 2011, 23:13

Sistemato tutto eccetto la chiusura con CTRL+C (dovrò studiare...)
In realtà dopo un attenta analisi passo-passo ho scoperto che il baco stava nella libreria OpenCV che mangiava memoria (e CPU) e anche dopo il flush non la restituiva interamente, quindi fino alla soglia di tot MB caricava come un mulo e poi flushava (ma solo dopo e comunque in parte)
Fatto sta che ho riscritto interamente la parte di cattura perché usi PyGame, scoprendo che oltre ad abbassare l'utilizzo di RAM (e di quanto poi!) è stato abbattuto anche l'utilizzo di CPU.
In pratica ora come ora è proprio oro da tenere in background, anche sparato col delay a 0.1~0.2 sec :D
Questo almeno sulla mia vetusta macchina...

Aggiunto anche un menu di selezione delle webcam esistenti qualora si volesse lasciare una webcam dedicata solo a questo scopo (decisamente inutile, ma non costava niente)
Ultima cosa, ho cambiato il secondo passaggio della calibrazione che trovavo vagamente impraticabile per limiti ambientali.

PS: Siccome i cambiamenti li ho fatti stasera non ho ancora avuto modo di verificare - essendo diversa la libreria di cattura - quanto l'immagine catturata cambi durante il ciclo del giorno rispetto a prima. A me pare tutto a posto, ma nei prossimi giorni ne sarò veramente sicuro.
PPS: Neanche a dirlo, ora non dipende più da opencv ma da pygame (che oltrettutto pesa parecchio meno)

Avatar utente
veleno77
Moderatore
Messaggi: 6282
Iscritto il: 25 marzo 2008, 18:26
Architettura: x86 (32Bit)
Località: Torino
Contatta:

Messaggio da veleno77 » 10 maggio 2011, 10:44

allora a dover di cronaca le dipendenze sono relative a python 2 o 3?
Se avete risolto il vostro problema, editate il primo post aggiungendo [Risolto] al titolo.
Problemi con Arch ? 1°Metodo-2°Metodo-3°Metodo
ArchWiki Translation Team - Cerchiamo traduttori!

psykopear
Little John
Messaggi: 800
Iscritto il: 28 ottobre 2007, 22:20

Messaggio da psykopear » 10 maggio 2011, 11:34

Molto probabilmente python2, non mi sembra pygame sia già stato portato a python3 (anche se non è che mi sia informato molto)
Arch Linux. Ebbasta
"L'utopia è come l'orizzonte: cammino due passi, e si allontana di due passi. Cammino di dieci passi, e si allontana di dieci passi. E allora, a cosa serve l'utopia? A questo: serve per continuare a camminare."

Avatar utente
veleno77
Moderatore
Messaggi: 6282
Iscritto il: 25 marzo 2008, 18:26
Architettura: x86 (32Bit)
Località: Torino
Contatta:

Messaggio da veleno77 » 10 maggio 2011, 12:07

allora i pacchetti per arch sono:

Codice: Seleziona tutto

python2
python2-numpy 
python-pygame 
python-imaging
io sul'eeepc otengo un errore alla linea 50
Se avete risolto il vostro problema, editate il primo post aggiungendo [Risolto] al titolo.
Problemi con Arch ? 1°Metodo-2°Metodo-3°Metodo
ArchWiki Translation Team - Cerchiamo traduttori!

Avatar utente
smilzoboboz
Novello Arciere
Messaggi: 88
Iscritto il: 11 maggio 2010, 21:40
Località: Arcade (TV)
Contatta:

Messaggio da smilzoboboz » 10 maggio 2011, 15:10

Veleno, mi hai "illuminato" su una cosa che in effetti era malata... immagino che alla richiesta di scegliere la webcam tu abbia messo un numero (come avrebbe fatto ogni persona sana di mente), il comando però accettava stringhe (tipo /dev/video blablabla), ora prende interi come è giusto che sia. (anche se 90 su 100 penso sia più comodo dare l'invio e basta per usare quella di default)

Mi sono accorto che a bassi livelli di luminosità avere lo schermo tutto bianco o tutto nero cambiava di molto la percentuale risultante, ho trovato una relazione proporzionale che stimi la quantità di luce e quindi ora c'è una nuova dipendenza, dalle PyQt per fare uno screencast ogni tot e vedere quanta luce spara lo schermo.

Ricapitolando: è scritto in python2, quindi tutte le eventuali dipendenze sono su librerie python2, in ogni caso, le dipendenze le aggiorno sul primo post

Ringrazio infinitamente chi testa lo script :), visto che bene o male io lo posso testare solo su una o due macchine.

PS: Scusate i continui cambiamenti, ma è anche per questo che la versione resta alpha

Avatar utente
veleno77
Moderatore
Messaggi: 6282
Iscritto il: 25 marzo 2008, 18:26
Architettura: x86 (32Bit)
Località: Torino
Contatta:

Messaggio da veleno77 » 10 maggio 2011, 23:32

allora.. errore mio , meno male che ti ho pure chiesto se era in python 2 o 3, nel senso che devo lanciarlo specificando la versione i python.

Per la webcam io ho lasciato la default.. sembra funzioni attualmente e vedrò meglio sull'eecpc

poi vorrei chiederti:
a) aggiorna le dipendenze in primo post . visto che siamo su arch le dipendenze sono:

Codice: Seleziona tutto

python2
python2-numpy 
python-pygame 
python-imaging
python2-pyqt
b) non ho capito le nuove feature cosa fanno e come farli (screenshot)
c) specifica che va lanciato con python2
d) pensato a metterlo su AUR?
e) non sarebbe male visto che stai usando le qt, passare ad un file .desktop e magari che rimanga nella tray, si bypasserebbe il CTRL+C o no? (parlo da profano)

Edit : perchè mi dice:

Codice: Seleziona tutto

   # You're configuration is not currently supported, feature requests at http://sourceforge.net/projects/camsensor/ Tracker > Feature Requests
Anyway actual ambient lightness is 24.8053048509%)
Ultima modifica di veleno77 il 11 maggio 2011, 0:34, modificato 1 volta in totale.
Se avete risolto il vostro problema, editate il primo post aggiungendo [Risolto] al titolo.
Problemi con Arch ? 1°Metodo-2°Metodo-3°Metodo
ArchWiki Translation Team - Cerchiamo traduttori!

Avatar utente
smilzoboboz
Novello Arciere
Messaggi: 88
Iscritto il: 11 maggio 2010, 21:40
Località: Arcade (TV)
Contatta:

Messaggio da smilzoboboz » 11 maggio 2011, 9:29

Il messaggio di errore era forse una delle prime cose che ho scritto (con pure un bell'errore sulla prima parola...) e riguardava la presenza o meno nella posizione specificata (o di default) del file con il livello di backlight corrente. Questo significa che l'eepc ha il file con le il valore di backlight in una posizione diversa dalla mia. Dovresti spulciare la cartella sys oppure cercare nella grande rete.

b) Allora, la nuova feature che usa le qt per fare catture dello schermo è parecchio "avanti" ma molto in fase di test... tanto che pensavo, finché non avrò trovato la curva di luminosità adeguata ( = tanti test e pagine di LibreOffice-Calc), di caricare la versione senza cattura schermo.
Ora come ora la cosa è buggata come "il male".
Se chiedevi informazioni su tutte le capacità del programma, con --help trovi qualcosa, poco in realtà ma dovrebbe bastare per capire cosa fanno le diverse opzioni... Altrimenti vedo di scrivere un how to più voluminoso (o di rendere più leggibile il codice python...).

c) Per python2, la prima riga dello script recita "#!/usr/bin/env python2" ovvero, lanciato con permessi di esecuzione "+x" (o 755 o in generale 7xx) si lancia da solo con python2

e) Sono lontano mille miglia, il codice è incasinato e da sistemare, ma in generale il discorso del CTRL+C è piuttosto semplice: c'è un loop cycle, questo se non viene terminato a forza, non termina, quindi, o si chiude la finestra del programma, o - se si vuole riutilizzare il terminale - si usa CTR+C.
La soluzione a questo problema in realtà c'è, ma implica due cose che per ora non sono priorità: riorganizzare interamente il codice e imparare qualcosina su ncurses.

d) Quando sarà abbastanza stabile sì, non penso fra molto, considera comunque che questa è una alpha e - come forse ti sarai accorto - si aggiungono/tolgono cose in continuazione, per ora sarebbe impensabile metterlo su AUR.

a) Aggiornato ;)

Avatar utente
veleno77
Moderatore
Messaggi: 6282
Iscritto il: 25 marzo 2008, 18:26
Architettura: x86 (32Bit)
Località: Torino
Contatta:

Messaggio da veleno77 » 11 maggio 2011, 10:44

mmmm a me non parte da solo pur dandogli i permessi di esecuzione devo lanciarlo con

Codice: Seleziona tutto

python2 camsensor.py
sarà che sono sotto zsh.
il file da me è

Codice: Seleziona tutto

/sys/class/backlight/eeepc/brightness 
poi la scala come la misura ,, perchè a me 1 è il massimo di luminosità mentre 10 è più scuro e mi sa che il tuo programma lo legge all'incontrario o sbaglio
Se avete risolto il vostro problema, editate il primo post aggiungendo [Risolto] al titolo.
Problemi con Arch ? 1°Metodo-2°Metodo-3°Metodo
ArchWiki Translation Team - Cerchiamo traduttori!

ArchGuy
Little John
Messaggi: 1339
Iscritto il: 26 marzo 2009, 18:16
Località: Montignoso

Messaggio da ArchGuy » 11 maggio 2011, 11:32

Una implementazione in C non permetterebbe un notevole risparmio di memoria e, quindi, la possibilita' di essere utilizzata "senza problemi" anche su netbook assai datati ?
"La percezione è cieca se non è illuminata dalla ragione." (Gandhi)

Avatar utente
smilzoboboz
Novello Arciere
Messaggi: 88
Iscritto il: 11 maggio 2010, 21:40
Località: Arcade (TV)
Contatta:

Messaggio da smilzoboboz » 11 maggio 2011, 11:51

@Veleno:Vedi a cosa serve testare... si, proprio come hai pensato sulle macchine su cui l'avevo provato la scala era 0=min, 9=max. Avevo messo il supporto per chi aveva più di 10 steps di luminosità, ma mancano 2 cose quindi: supporto per chi abbia la scala che non parte dallo 0 e supporto per chi ha la scala "invertita".

@ArchGuy: si e no, nel senso che da varie prove che avevo fatto tempo addietro, la velocità di calcolo di Python non è tanto peggiore di quella di C. C'è anche da dire che in realtà i calcoli ci sono ma ho visto che si ottiene una precisione maggiore su una matrice 8x6 piuttosto che sull'immagine intera a 640x480 o 320x240 e quindi il grosso è delegato alle librerie pygame, PIL e nelle ultime versioni pyQt4 (che se non sbaglio sono in bytecode). Avrebbe forse senso nel caso uno settasse un gap minore di 0.1 ma lo sconsiglio perché ho visto che bene o male, per quante ottimizzazioni ci si possa fare, l'immagine viene presa da una webcam, e quindi basta avvicinarsi alla stessa mentre ci si sistema sulla sedia perché i valori si sballino (= non è un sensore di luminosità, vuole esserlo).
In generale il programma era nato per sopperire ai lenti cambiamenti di luminosità, ovvero al ciclo solare, capisce quando ci sono repentini cambi di luminosità e agisce con un ritardo di $gap. Cambiando il parametro gap e abbattendo la priorità di cpu del programma si dovrebbe poter usare praticamente ovunque.

Avatar utente
veleno77
Moderatore
Messaggi: 6282
Iscritto il: 25 marzo 2008, 18:26
Architettura: x86 (32Bit)
Località: Torino
Contatta:

Messaggio da veleno77 » 11 maggio 2011, 12:07

allora devo vedere bene la scala può essere che sia da 1-9
Nel mio piccolo proporrei:
- Un modo per rintracciare in automatico il file di configurazione
- un modo per capire la scala quando è invertita

Poi non so quali siano le tue priorità, io parlo per la mia esperienza ad utilizzarlo
Se avete risolto il vostro problema, editate il primo post aggiungendo [Risolto] al titolo.
Problemi con Arch ? 1°Metodo-2°Metodo-3°Metodo
ArchWiki Translation Team - Cerchiamo traduttori!

Avatar utente
smilzoboboz
Novello Arciere
Messaggi: 88
Iscritto il: 11 maggio 2010, 21:40
Località: Arcade (TV)
Contatta:

Messaggio da smilzoboboz » 11 maggio 2011, 18:09

Pensavo mi ci volesse di più per trovare una funzione che approssimasse bene i valori di luce da schermo e invece (almeno per la mia macchina) ne ho trovata una di parecchio adeguata del tipo f(x)= mx+q-e^(x/k), e quindi APLHA8 caricata fresca fresca... forse è la più realmente utilizzabile di tutte le versioni (la alpha7 era la più buggata in assoluto :/).
Il sistema di cattura della schermata non viene ovviamente usato qualora si lanci il programma fuori da un server X.

@Veleno: già, dovrei spulciarmi le figate delle librerie sys/os ma per ora fai così: metti la luminosità al minimo e dai un

Codice: Seleziona tutto

cat /sys/class/backlight/eeepc/brightness
poi la metti al massimo e ridai il "cat". Quindi, hai min e max. Per la ricerca automatica devo cercare su internet come ottenere i vari parametri dal driver del kernel (sperando non cambi da scheda a scheda), ma in progetto c'è anche quell'implementazione. dontuorri ;)

Bon, ora mi prendo qualche minuto e spiego un poco le varie funzioni del programma.

Codice: Seleziona tutto

usage: camsensor.py [-h] [--verbose] [--version] [--calibrate] [--cam cam]
                    [--gap N] [--delta N] [--offset N] [--average N]
                    [--steps N] [--invert] [--bl-offset N] [--auto]
                    [--acpi path] [--debug]

Calculates ambient brightness and suggests the screen's correct backlight
using a webcam. On linux machines it can also set the correct backlight for
you automatically.

optional arguments:
  -h, --help     show this help message and exit
  --verbose      turns on messages
  --version      displays current version and exits
  --calibrate    calibrate before starting the main program
  --cam cam      cam to be used as capture device (default: None)
  --gap N        sleep time between framecaptures, in sec (default: 0.5)
  --delta N      function delta (default: 210)
  --offset N     offset of the 0% value of ambient brightness (default: 0)
  --average N    number of elements to average before changing backlight
                 (default: 150)
  --steps N      number of backlight level steps (default: 10)
  --invert       choose if you have the backlight scale inverted (eg. 9 min -
                 0 max)
  --bl-offset N  set if your backlight steps start from an arbitrary number
                 (eg. 2 min - 12 max instead of 0 min - 9 max)
  --auto         automatically changes the backlight level
  --acpi path    acpi-brightness file path, needed for --auto to work
                 (default: /sys/class/backlight/acpi_video0/brightness)
  --debug        Displays additional informations, don't use with --verbose
--verbose: è l'opzione da lanciare se si vuole sapere ad ogni passaggio: il livello di retroilluminazione attuale e la percentuale di luminosità ambientale (rispetto alla scala da voi scelta)
--calibrate: è l'opzione da lanciare la prima volta che eseguite il programma, attraverso due semplici passaggi setta il valore minimo e il valore da voi scelto e calcola da solo i moltiplicatori e l'offset della futura scala di riferimento. Ai successivi avvii dovrete dare al programma le configurazioni suggerite. NOTA: devo ancora implementare la cattura degli screenshoot per questa opzione, quindi se possibile configurate il secondo passaggio con schermo il più possibile nero (ma non spento).
--cam: STR, scrivendo un percorso valido per una camera non la richiede in seguito (es. /dev/video0)
--gap: FLOAT, indica l'intervallo di tempo fra una cattura e l'altra, per me ha senso sopra i 0.3 sec, ma ognuno è libero di fare le prove che vuole (default: 0.5). Parametro da cambiare se il programma gira troppo lento.
--delta / --offset : sono i parametri che si ottengono dalla calibrazione. Ogni volta che vi sposterete (se avete un portatile) ri-effettuate la calibrazione per avere un riscontro reale.
--average: INT, il programma funziona grossomodo così: fino all' $average scelto calcola la media dei valori, poi man mano cancella il più vecchio, in caso di bruschi cambiamenti di luminosità resetta tutto e riparte. Questo evita che qualche movimento davanti alla webcam risulti in un cambiamento di retroilluminazione.
--steps: INT, numero di step di retroilluminazione dell'LCD
--invert: nel caso in cui il valore di retroilluminazione degli step sia invertito (es. 0 = max -> 9 = min)
--bl-offse: INT, nel caso la retroilluminazione non parta da 0 ma da 1 o più. Se usato assieme ad --invert, va messo sempre il valore più vicino a zero (es. se la scala è 2=max -> 12=min, bl-offset = 2)
--auto: imposta da solo il valore di retroilluminazione (non funziona e restituisce un errore se il file della retroilluminazione di sistema non è nella posizione di default)
--acpi: STR, indicare il percorso del file di retroilluminazione (solitamente presente da qualche parte nella cartella /sys/class/)
--debug: da non usare assieme a verbose per il casino risultante... mostra:
il livello di luce esterna (raw, non in %)
il livello corretto coll'equazione che calcola la luce proveniente dallo schermo
il livello di luce dello schermo
l'ammontare della correzione
la percentuale corretta di luce esterna
quella originale
la correzione sempre in %

EDIT: Dati alla mano, consumi attuali di memoria:

Codice: Seleziona tutto

VIRT   RES SHR
822888 28m 16m
Ultima modifica di smilzoboboz il 11 maggio 2011, 18:45, modificato 1 volta in totale.

Avatar utente
veleno77
Moderatore
Messaggi: 6282
Iscritto il: 25 marzo 2008, 18:26
Architettura: x86 (32Bit)
Località: Torino
Contatta:

Messaggio da veleno77 » 12 maggio 2011, 2:07

non ho provato tutto.. e letto bene, visot l'orario.
comunque il max a me è 15 vado da 1 a 15 , ho dovuto usare uno sleep a cat altrimenti era buio e non vedevo ahahahah
comunque il mio 15 me lo vede come 1 nel programma.
Continuo a doverlo avviare con

Codice: Seleziona tutto

python2 camsensor.py
comunque io ho anche un file /sys/class/backlight/eeepc/max_brightness lo hai anche tu? li indica il valore massimo, se lo hai anche tu e lo hanno "tutti", allora sei a cavallo perchè da quel valore puoi sapere se invertire il conteggio o meno a me da 15 ad eempio
Se avete risolto il vostro problema, editate il primo post aggiungendo [Risolto] al titolo.
Problemi con Arch ? 1°Metodo-2°Metodo-3°Metodo
ArchWiki Translation Team - Cerchiamo traduttori!

Avatar utente
smilzoboboz
Novello Arciere
Messaggi: 88
Iscritto il: 11 maggio 2010, 21:40
Località: Arcade (TV)
Contatta:

Messaggio da smilzoboboz » 12 maggio 2011, 14:38

Bon, dai, diventa sempre di più una cosa gradevole.
Nuove features...
- nella fase di configurazione trova da solo la posizione dei file "brightness", "max_brightness" purché il sistema corrisponda alla gerarchia /sys/class/backlight/*/[brightness|max_brightness]
- nella fase di configurazione imposta (con un piccolo aiutino da parte dell'utente) anche tutte le info relative agli step di retroilluminazione
- sistemato un brutto errore (mio) di calcolo sull'implementazione dell'offset degli step di retroilluminazione che avevo aggiunto in una non ben precisata ora della notte (con risultante errore)
- aggiunta la pagina man inglese e sistemata qualche voce dell'help
- cominciato il riordino del codice (poco o niente per ora ma almeno c'è la buona volontà)

@Veleno: Come era evidente dalle poche righe precedenti, ho visto che anche sulla mia macchina c'era max_brightness, cercando in internet ho visto che tutti avevano la gerarchia del tipo /sys/class/backlight/*vattelapesca*/brightness e voilà alpha9 fuori. :)
Se non si apre da solo con python2 cambia la prima riga dello script da

Codice: Seleziona tutto

#!/usr/bin/env python2
a

Codice: Seleziona tutto

#!/usr/bin/python2
PS: Il codice lo scrivo quasi sempre di fretta, nel senso che non si può scrivere per 10 minuti e poi fare altro, ma è anche difficile trovare ore completamente libere -> tardo pomeriggio/sera/notte/?mattina? e quindi errori di forma e altre robe anche meno ininfluenti possono scappare.

PPS: È stato bello ieri o l'altro ieri mattina, quando, mentre stavo facendo prove per vedere se il programma reagiva bene ai cambiamenti di luce alzando e abbassando in continuazione (tipo 10-15 volte) la tapparella della mia stanza, vedo un'anziana signora - che nel frattempo aveva smesso di spazzare per terra - guardare verso la mia stanza un poco preoccupata... non serve dire che appena ha visto che ero un ragazzo ha fatto quella classica espressione che si traduce con: "Bah, la gioventù di oggi, e dire che ai miei tempi..."
Ultima modifica di smilzoboboz il 12 maggio 2011, 14:40, modificato 1 volta in totale.

Avatar utente
veleno77
Moderatore
Messaggi: 6282
Iscritto il: 25 marzo 2008, 18:26
Architettura: x86 (32Bit)
Località: Torino
Contatta:

Messaggio da veleno77 » 13 maggio 2011, 1:17

Allora
-devo sempre avviarlo con python2 nonostante la tua proposta di modifica
-il file viene visto in automatico
- pur settando il minimo come 1 lui , in verbose mi mostra sempre 1 come max
- come modifichi la luminosità, perchè ho visto che è presente anche un file
/sys/class/backlight/eeepc/actual_brightness se può servire

- su gnome pare non cambiarmi in automatico la luminosità

EDIT:

Codice: Seleziona tutto

$ python2 camsensor.py --verbose --delta 1119.37135083 --offset 12323 --steps 0 --bl-offset 1 
['/dev/video', '/dev/video0']
Choose one of cams listed below (default: 1=/dev/video): 
Traceback (most recent call last):
  File "camsensor.py", line 319, in <module>
    d = 100.00/float(args.steps)
ZeroDivisionError: float division by zero
Ultima modifica di veleno77 il 13 maggio 2011, 1:25, modificato 1 volta in totale.
Se avete risolto il vostro problema, editate il primo post aggiungendo [Risolto] al titolo.
Problemi con Arch ? 1°Metodo-2°Metodo-3°Metodo
ArchWiki Translation Team - Cerchiamo traduttori!

Avatar utente
smilzoboboz
Novello Arciere
Messaggi: 88
Iscritto il: 11 maggio 2010, 21:40
Località: Arcade (TV)
Contatta:

Messaggio da smilzoboboz » 13 maggio 2011, 8:59

EDIT: Era un baco, bisogna cambiare 3 righe

Codice: Seleziona tutto

--- camsensor.py    2011-05-12 13:57:13.000000000 +0200
+++ camsensor.py    2011-05-13 09:35:55.724756317 +0200
@@ -279,7 +279,7 @@
     if os.path.isfile(fd):
         try: fd_file = open(fd)
         except: print "Unable to read "+fd+", check the permissions"
-        fd = int(fd_file.readline(1))
+        fd = int(fd_file.readline())
         fd_file.close()
         return fd
     else:
@@ -335,8 +335,8 @@
     bkg_ofs = readfile(brightness)
     if steps < bkg_ofs:
         str_invert = "--invert"
-        steps = bkg_ofs - steps
-        bkg_ofs = steps
+        steps,bkg_ofs = bkg_ofs,steps
+        steps = steps - bkg_ofs
     else:
         str_invert = ""
         steps = steps - bkg_ofs
Su gnome avevo rilevato ai tempi di gnome2 un "conflitto" se era stato attivato in precedenza (non avviato, proprio usato dall'utente) l'applet di luminosità del pannello (in realtà "confliggeva" anche con lo shortcut da tastiera e qualche altra roba, perché la impostava via dBus). Ho messo conflitto fra virgolette perché il conflitto era cambiare la luminosità ogni tot (qualcosa come 2-3 minuti) al livello che gli era stato impostato. Terminando l'applet si risolveva ogni cosa.
Non ho provato nulla su gnome3.
Ultima modifica di smilzoboboz il 13 maggio 2011, 9:42, modificato 1 volta in totale.

Avatar utente
smilzoboboz
Novello Arciere
Messaggi: 88
Iscritto il: 11 maggio 2010, 21:40
Località: Arcade (TV)
Contatta:

Messaggio da smilzoboboz » 18 maggio 2011, 16:04

Doppio post ma non ha senso modificare il precedente dopo una settimana...
rilasciata la alpha10.
Ho riscritto tutto il codice in forma ad oggetti, in modo da essere più comprensibile e volgarmente parlando più performante (dovrebbe, visto che i consumi, sono lì lì).
Molti dei parametri sono stati cambiati o adattati per una questione puramente logica (es. la luminosità non è più 0<255000, ma 0<255) e le equazioni sono quasi tutte cambiate. Ho infine tolto due parametri: --cam e --acpi visto che risultavano un po' ridondanti (se non vi sembra così ditemelo).
Per la gioia di chi gioirà ora il codice lo modifico via subversion su sourceforge, quindi, lascerò la alpha10 e successive come "rilasci stabili" finché non sarò soddisfatto del progresso sul codice (che comunque è, appunto, disponibile tramite subversion). =)
Faccio presente che ho praticamente solo riscritto e cambiato, adattato roba, quindi devo ancora vedere (bene) dove fare cambiamenti per ottimizzare le prestazioni.
In ogni caso sulla mia macchina ora come ora consuma 28MB di RAM e la CPU come segue: (in realtà ho modificato la frequenza di cattura schermo quindi i valori 0.6% e 0.3% vanno corretti a 1.3% e 1.0%)
Immagine
Ultima modifica di smilzoboboz il 18 maggio 2011, 16:07, modificato 1 volta in totale.

Avatar utente
veleno77
Moderatore
Messaggi: 6282
Iscritto il: 25 marzo 2008, 18:26
Architettura: x86 (32Bit)
Località: Torino
Contatta:

Messaggio da veleno77 » 18 maggio 2011, 17:41

domanda stupida.. ad ogni versione devo ricalibrare?

Codice: Seleziona tutto

python2 camsensor.py --verbose --auto
['/dev/video', '/dev/video0']
Choose one of cams listed below (default: 1=/dev/video): 
camsensor.py:195: RuntimeWarning: the frombuffer defaults may change in a future release; for portability, change the call to read:
  frombuffer(mode, size, data, 'raw', mode, 0, 1)
  im = Image.frombuffer(self.mode,(self.__strx,self.__stry),self.__stri,'raw')
PCT:21.587 | STP:1 AVG:21.587% on:1
Error accessing /sys/class/backlight/eeepc/brightness, check the permissions or run as superuser.
Se avete risolto il vostro problema, editate il primo post aggiungendo [Risolto] al titolo.
Problemi con Arch ? 1°Metodo-2°Metodo-3°Metodo
ArchWiki Translation Team - Cerchiamo traduttori!

Avatar utente
smilzoboboz
Novello Arciere
Messaggi: 88
Iscritto il: 11 maggio 2010, 21:40
Località: Arcade (TV)
Contatta:

Messaggio da smilzoboboz » 18 maggio 2011, 18:38

Chiedo scusa, ho voluto rendere pubblico il progetto forse un po' troppo prestino, ma ora come ora: riscrittura fatta, parametri normalizzati, etc, etc credo che tu non debba più ricalibrare. (o meglio, ogni volta che ti sposti, o che vuoi cambiare la scala in percentuale)
Per fare un esempio, se prima sei in una stanza coi muri in cemento - grigio 50-60% - (tipo la mia università, :|) e poi ti sposti in una stanza con le pareti bianche, puoi avere una differenza di rilievo fino a 20-25 (~15%)
In ogni caso, assolutamente, per ora il programma non salva NIENTE di permanente sulla macchina, quindi i parametri ottenuti dalla calibrazione vanno dati sempre al programma. (steps, bkg_ofs, delta, ofs, invert) In un prossimo futuro vedo molto vicini i profili (es. casa, studio, esterno, etc)
Infatti, ora come ora, se ti salvi i parametri per, che ne sò, la tua stanza (o un altro posto in cui usi spesso il computer), basta che tu gli dia gli stessi parametri fino a quando non cambierai la tinta dei muri o la carta da parati o la disposizione di mobili in ebano davanti alla webcam...

Ora, il warning della libreria PIL è assolutamente trascurabile, tanto più che se facevo come volevano loro mi veniva una riga nera in alto sull'immagine...

Infine, per usare il parametro auto, devi poter scrivere sul file "brightness", altrimenti lancia come superuser (anche se basta proprio dare permessi di scrittura su quel file)

Piuttosto, vedevo giusto prima che di tutto il programma, la cosa che mangia più risorse è lo screenshoot, soprattutto se come me si ha uno schermo grande (17'' a 1440x900), volevo vedere se qualcuno aveva scritto per python (o addirittura creato una libreria) riguardo alla cattura di schermate, per vie "ufficiali" le librerie Qt sono le più veloci/portabili.

PS: Magari, prima di provare con --auto, prova a vedere cosa viene fuori con --debug (senza --verbose), così vedi se i "futuri" valori ti andranno bene.
PPS: Delle volte il programma si accorge tipo se è passata una nuvola (nuvolotta) che io magari neanche ci avevo fatto caso, può essere quasi divertente.

Avatar utente
veleno77
Moderatore
Messaggi: 6282
Iscritto il: 25 marzo 2008, 18:26
Architettura: x86 (32Bit)
Località: Torino
Contatta:

Messaggio da veleno77 » 18 maggio 2011, 20:36

Codice: Seleziona tutto

 python2 camsensor.py --verbose --calibrate
['/dev/video', '/dev/video0']
Choose one of cams listed below (default: 1=/dev/video): 

Set the backlight to the minimum then press enter 
0 15

Cover the webcam and then press enter 
Now calibrating, do not uncover the webcam...
Traceback (most recent call last):
  File "camsensor.py", line 527, in <module>
    main()
  File "camsensor.py", line 422, in main
    amin.set_values()
  File "camsensor.py", line 371, in set_values
    xxx.assign_amb(bah)
NameError: global name 'bah' is not defined
Se avete risolto il vostro problema, editate il primo post aggiungendo [Risolto] al titolo.
Problemi con Arch ? 1°Metodo-2°Metodo-3°Metodo
ArchWiki Translation Team - Cerchiamo traduttori!

Avatar utente
smilzoboboz
Novello Arciere
Messaggi: 88
Iscritto il: 11 maggio 2010, 21:40
Località: Arcade (TV)
Contatta:

Messaggio da smilzoboboz » 19 maggio 2011, 16:14

Recitava l'antico adagio: "Guai a colui il quale cambierà nome a variabili globali senza testarne gli effetti", ma anche "Guai a colui il quale userà variabili globali". E così, per non dare contro al volere degli antichi ho eliminato le variabili globali... ora tutti i dati girano in bussalottini chiusi.

Volevo annunciare gli obbiettivi più prossimi: la gestione di profili personalizzati e la totale indipendenza da input dell'utente esterni alla calibrazione (mediante l'uso di profili), così da poter girare in background come demone di sistema.
Se avete delle necessità, cose che proprio non vi piacciono o di cui non trovate il senso (di solito sono molte), fatemelo sapere che ci rifletto su.

Infine devo dire che non sono stato molto contento del modo in cui lavorano curses e ncurses, e che quindi la chiusura gradevole del ciclo di loop (non con CTRL+C) non rientra più tra le priorità da espletare prima della beta.

@Veleno: a meno di cataclismi di vario genere, quello ed altri errori relativi alle variabili che avevo cancellato/rinominato dovrebbe essere fixed.

Rispondi