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 then c=0
if c>1 then c=1
if e>a then e=a
if e<1 then e=1
if f>a then f=a
if f<1 then f=1
if h>b then h=b
if h<1 then h=1
if i>b then i=b
if i<1 then i=1
if s<0 then let s=0
if s>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 t>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.