Hallo jolo,
das teilweise kommentierte Script kannst du 3 Beiträge vorher downloaden, msl hat diesen Download (das Script) nur noch einmal mit in den Beitrag geschrieben (ohne Kommentare).
CHDKLover
trichtex hat geschrieben:Moin!msl hat geschrieben:Hier mal ein Skript zur Bewegungserkennung.
Gelegentlich möchte man festlegen können, in welchem Bildbereich Bewegungen erkannt werden sollen. In meiner Scriptversion kann deshalb nach der Festlegung der Zeilen und Spalten des Gitters ein Fenster aktiviert werden, innerhalb dessen Bildänderungen erfaßt werden. Nachfolgend wird festgelegt, welche Zeilen und Spalten das Fenster umfaßt.
Das Fenster läßt sich auch invertiert aktivieren. Dann wird alles außerhalb der festgelegten Zeilen und Spalten auf Bildänderungen gepüft.
Munter bleiben... TRICHTEX
- Code: Alles auswählen
rem Autor Trichtex
rem Für A610 mit Allbest Build #50
@title Bewegungsauslöser
@param a Zeilen Gitter
@default a 4
@param b Spalten Gitter
@default b 6
@param c Gitter zeigen (0=Nein 1=Ja)
@default c 1
@param d Fenster (0=Aus 1=Ein 2=Inv)
@default d 1
@param e Erste Zeile des Fensters
@default e 2
@param f Letzte Zeile des Fensters
@default f 3
@param h Erste Spalte des Fensters
@default h 3
@param i Letzte Spalte des Fensters
@default i 4
@param j Prüfmethode (0-U,1-Y,2-V)
@default j 1
@param k Empfindlichkeit (Pixel)
@default k 6
@param r Lichtschwellwert (0-255)
@default r 10
@param l Vergleichsintervall (ms)
@default l 1
@param m Auslöseverzögerung (0.1s)
@default m 1
@param o Timeout-Periode (s)
@default o 170
@param n Zahl Serienbilder
@default n 5
rem s Wert: D=Direktauslösung, oN=Auslösung ohne Neufokussierung, S=Serienauslösung ohne Neufokussierung
@param s Auslöseart (0=D/1=oN/2=S)
@default s 1
@param u Vor-Fokus (0=Nein 1=Ja)
@default u 1
if c<0>1 then c=1
if e>a then e=a
if e<1>a then f=a
if f<1>b then h=b
if h<1>b then i=b
if i<1 then i=1
if s<0>2 then let s=2
get_prop 0 x
if x=18 then let s=3
get_prop 6 y
if s<>2 and y=1 then
let s=2
else if s=2 and y<>1 then
let s=0
endif
if s=0 then let g=1 else let g=0
m=m*100
o=o*1000
print "Beenden: Auslöser drücken"
while 1
if x<>18 and u<>0 then gosub "fokussieren"
md_detect_motion b, a, j, o, l, r, c, t, d, h, e, i, f, g, k, m
if x<>18 and u<0>0 then print t, " Felder erkannt"
if t=0 then gosub "wecken"
if t>0 and u=0 and s=2 then gosub "fokussieren"
if t>0 and s=1 then click "shoot_full"
if t>0 and s=2 then gosub "Serienaufnahme"
if t>0 and s=3 then gosub "Filmaufnahme"
if t>0 and x<>18 then
do
get_prop 205 p
until p<>1
let t=0
endif
wend
:fokussieren
press "shoot_half"
do
get_prop 205 p
until p=1
return
:Serienaufnahme
press "shoot_full"
sleep n*1000
release "shoot_full"
return
:Filmaufnahme
click "shoot_full"
sleep n*1000
click "shoot_full"
return
:wecken
release "shoot_half"
if x<>18 and u=0 then
click "set"
click "set"
endif
return
end
Und hier mal ein Bild, das in ein paar Minuten mit dem Bewegungsauslöser bei Sonnenlicht gemacht wurde (einige Versuche, weil Tropfen nicht immer so fallen, wie gewünscht). Scipteinstellung: Empfindlichkeit 4 Pixel, Auslöseverzögerung 0, Lichtschwellwert 8, alles andere Defaultwerte. Belichtung 1/1250, kürzer wäre möglich und besser gewesen, aber für einen "Schuß aus der Hüfte" ist das schon beeindruckend. Ich möchte mir gar nicht vorstellen, sowas irgendwie manuell zu versuchen.
rem Author: MLuna - based om MX3 sample script
rem Tested on S3IS only
rem Requires Fingalo's build v 119
rem Use with caution!
@title Motion Detection
rem Shot without auto-focus/with auto-focus/continously (nedd to put in continous mode manually)
rem T implies test mode with MD cells drawing and no shots taken
@param a Shot (0=nf/1=f/2=c/3=t)
@default a 1
rem How long the shutter button will be pressed in continous mode
@param b Continuos shoot (secs)
@default b 10
@param c Threshold (0-255)
@default c 5
@param d Compare Interval (msecs)
@default d 20
@param e Compare Interval (secs)
@default e 0
rem If this value is too small, the camera goes continously shooting after the 1st shot.
rem Experiment with this value to find one fitted to your needs
@param f Begin Delay (secs)
@default f 5
@param g Pix step(speed/accuracy adj)
@default g 5
@param h Columns
@default h 6
@param i Rows
@default i 6
rem Frame width in which no MD is performed (in cell units)
@param j Dead frame
@default j 0
if a<0 then let a=0
if a>3 then let a=3
if c<0 then let c=0
if d<0 then let d-0
if e<0 then let e=0
if g<1 then let g=1
if h<1 then let h=1
if i<1 then let i=1
if j<0 then let j=0
rem Conversions secs to msecs
let b=b*1000
let e=e*1000
let f=f*1000
let d=d+e
rem This is the timeout in msecs. After this period, the motion trap is rearmed.
let T=600000
rem Parameters for the Dead Frame
let J=j+1
let H=h-j
let I=i-j
let t=0
print "press Shutter Button to Stop"
:repete
md_detect_motion h, i, 1, T, d, c, 1, t, 1, J, J, H, I, 0, g, f
if a=0 and t>0 then click "shoot_full"
if a=1 and t>0 then shoot
if a=2 and t>0 then goto "continuos"
if a=3 then goto "test"
let t=0
goto "repete"
:continuos
let X=get_tick_count
press "shoot_full"
:contloop
let U=get_tick_count
let V=(U-X)
if V<b then goto "contloop"
release "shoot_full"
goto "repete"
:test
if t>0 then print "Detected cells: ",t else print "No detection in 10 min!"
let t=0
goto "repete"
end
rote Fehlermeldung im oberen linken Eck (uBASIC:2 Unk stmt)
rem Tut nichts
Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste