[uBasic] Bewegungserkennung (motion detection)

CHDK-Skripte, CHDK-Entwicklung, PC-Zusatzprogramme, Informationen für Tüftler

Beitragvon CHDKLover » 05.06.2008, 15:24

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
A610 100e CHDK-DE: aktuelle Version
Benutzeravatar
CHDKLover
Super-Mod
Super-Mod
 
Beiträge: 878
Bilder: 8
Registriert: 12.09.2007, 18:25
Wohnort: Dresden
Kamera(s): a610 100e

Beitragvon jolo » 07.06.2008, 17:22

Danke ChDKLover,
ich habs mit deiner Hilfe gefunden.

Herzliche Grüße

Jolo
A 710 IS, Allbest 50
jolo
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 3
Registriert: 05.06.2008, 15:06

Re: Bewegungserkennung (motion detection)

Beitragvon Gast » 08.06.2008, 17:38

Hallo,
habe dein Skript geladen und gestartet.
Leider habe ich das Problem, dass die Kamera nach dem Auslösen sofort abschaltet und auch kein Bild aufgenommen hat.

An was kann das liegen?

Thomas (A610)


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.

Bild
Gast
 

Bewegungserkennung zu langsam

Beitragvon vlamers » 09.06.2008, 21:12

Hallo,

Der in diesem Thema genannte Code läuft bei meiner S5is nicht. er sagt oben links eine rote Zeile mit ner Fehlermeldung.
Hab dann mal gegoogelt und diesen Code gefunden:
Code: Alles auswählen
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


der ist zwar für eine S3 läuft aber auf meiner S5, aber leider zu langsam. zwischen einer erkannten Bewegung und dem Auslösen der Kamera liegen ca 1 - 1,5 sec, da sie jedes mal neu Focusiert. Ich hab alle Auslöse Modi ausprobiert. Hilft aber nix.

Da hier in dem Forum ne Menge Leute sind die sich mit den Scripten sehr gut auskennen, hoffe ich das das Problem gefunden wird. :-)


MfG Volker Lamers
vlamers
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 22
Registriert: 28.04.2008, 18:42
Wohnort: Bayern

Beitragvon msl » 09.06.2008, 23:04

Wie lautet denn die Fehlermeldung?

Hast Du die Parameter bei Deinem Skript mal verändert. Parameter c hat Einfluß auf die Empfindlichkeit. Generell ist die Auslöseempfindlichkeit und damit die Auslösegeschwindigkeit schwierig optimal einzustellen.

Gruß msl
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4567
Bilder: 271
Registriert: 22.02.2008, 11:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Beitragvon vlamers » 13.06.2008, 20:38

Hallo

ja hab die Einstellungen alle durchprobiert. Das Problem ist das die Kamera egal was ich einstelle erst mal fokussiert. Schön zu sehen am AF Hilfslicht...
Egal welchen Auslösemodus ich einstelle immer das selbe. Das Skript das in diesem Thread weiter oben gepostet wurde läuft auf meiner S5is gar nicht.

Gruß Volker

PS: Die Fehlermeldung weiß ich nicht mehr genau da ich die skripte nicht mehr drauf hab war aber sowas wie: SMT.. UG... Der Punkt steht dafür das ich nicht weiß was da kam. War nur zwei Wörter ganz oben links im Display. Die Buchstaben waren soweit nach oben verschoben das man nur ca. die Hälfte gesehen hat.
vlamers
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 22
Registriert: 28.04.2008, 18:42
Wohnort: Bayern

Beitragvon msl » 14.06.2008, 22:55

Die Fehlermeldung weist auf einen Syntaxfehler hin. Kann es sein, dass die Skripte mit einem anderen OS als Windows erstellt wurden? Stichwort ANSI.

Das erste Skript in diesem Thread funktioniert definitiv auch mit einer DryOS-DigicIII-Kamera. :?

Gruß msl
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4567
Bilder: 271
Registriert: 22.02.2008, 11:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Beitragvon vlamers » 15.06.2008, 15:25

ANSI? Was ist das? Ich kenne nur Ansi-Lumen.

Hab das skript mit windows Vista gemacht. Den Text in eine Editor Datei kopiert. Als Bewegungserkennung.txt gespeichert und auf die SD kopiert.

Hab das mit anderen Skripten genau so gemacht und da hats funktioniert. (Intervallaufnahme, Belichtungsreihen Skript)

MfG Volker
Canon Powershot S5is mit Allbest 50
vlamers
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 22
Registriert: 28.04.2008, 18:42
Wohnort: Bayern

Beitragvon msl » 15.06.2008, 15:37

Bei ANSI meinte ich die Text-Codierung, d. h. wie wird der Text bei Speicherung codiert. Das wurde hier im Forum schon öfters als fehlerquelle ausgemacht. Da aber andere Skripte bei Dir funktionieren, können wir diese Fehlerquelle ausschließen.

Es scheint also doch ein S5-spezifische Sache zu sein. Es wäre an der Zeit, dass sich hier mal andere S5-Besitzer zu Wort melden und testen. Hallo IceBaer ;)

Gruß msl
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4567
Bilder: 271
Registriert: 22.02.2008, 11:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Beitragvon fe50 » 15.06.2008, 16:48

...Ein allgemeiner Tipp für die Scripterstellung:

Am Ende des Scripts immer eine leere Zeile lassen (letzte Befehlszeile mit RETURN (=CR+LF) abschliessen)

Ansonsten läuft zwar meistens das Script, es kommt aber eine Fehlermeldung (Rot, links oben, "Parse err")
◄"The grass was greener, The light was brighter"►  ◄fe50 home►  ◄TRAIL-Magazin►  ◄RTFM !►
Benutzeravatar
fe50
CHDK-Legende
CHDK-Legende
 
Beiträge: 1106
Registriert: 25.04.2008, 14:28
Wohnort: B'Württemberg
Kamera(s): Ixus50 101b, Ixus860 100c, SX10 101a

Beitragvon msl » 15.06.2008, 16:55

@fe50 Danke für den Tipp.
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4567
Bilder: 271
Registriert: 22.02.2008, 11:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Beitragvon fe50 » 15.06.2008, 19:14

Hallo vlamers,
rote Fehlermeldung im oberen linken Eck (uBASIC:2 Unk stmt)

Du hast also anscheinend ein Problem in/mit der 2. Zeile in Deinem Script, "Unbekannter Befehl"...da hier mehrere Versionen / Varianten herumschwirren:

Poste doch bitte mal GENAU die Zeilen 1-3 des Scripts, so wie es auf Deiner Karte ist...am besten per Zwischenablage kopieren & einfügen...

Um festzustellen, ob tatsächlich die Zeile 2 Probleme macht kannst Du einfach ganz am Anfang ein paar Zeilen mit
Code: Alles auswählen
rem Tut nichts

einfügen & dann testen - die Nummer in der Fehleranzeige müsste sich ebenfalls ändern...

Was mir gerade noch auffällt: es wird schon die richtige Datei geladen ?
Ich frage nur deshalb: die S5 ist eine DryOS Kamera, also dürfte die doch nur kurze Dateinamen im Auswahldialog anzeigen, so ala "BEWEGE~1.TXT" ?
Oder hänge ich da der Entwicklung schon wieder hinterher ?
(zur Sicherheit mal mit einem kurzen Namen, "BEW01.BAS" testen)
◄"The grass was greener, The light was brighter"►  ◄fe50 home►  ◄TRAIL-Magazin►  ◄RTFM !►
Benutzeravatar
fe50
CHDK-Legende
CHDK-Legende
 
Beiträge: 1106
Registriert: 25.04.2008, 14:28
Wohnort: B'Württemberg
Kamera(s): Ixus50 101b, Ixus860 100c, SX10 101a

Beitragvon msl » 16.06.2008, 11:54

Da hier doch einiges an Informationen zusammengekommen ist, möchte ich mal zusammenfassen:

1. Das Bewegungserkennung-Skript funktioniert auch auf einer S5. Bitte dazu das Skript aus der Skriptsammlung laden. Es entspricht den nachstehenden notwendigen Bedingungen.

2. Das Skript muss die Parameter für eine DigicIII-Kamera enthalten.

3. Das Skript muss mit mit einer Leerzeile abgeschlossen werden.

4. Der Dateiname sollte nicht mehr als 8 Zeichen vor dem Punkt enthalten, damit keine Verwechselungen entstehen. Das DryOS kann bisher leider nur kurze Dateinamen anzeigen.

Gruß msl
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4567
Bilder: 271
Registriert: 22.02.2008, 11:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Bewegungserkennung

Beitragvon hajogt » 16.06.2008, 15:25

Hallo zusammen,

ich habe eine Frage zu dem Script zur Bewegungserkennung. Ich habe eine Canon g7 die ja eigentlich DigicIII sein soll. Wenn ich das Script mit dem Eintrag get_prop 206 p starte tut sich nichts. Ändere ich aber auf get_prop 205 p dann läuft es.
kann mir das jemand von euch erklären. Hat jemand von euch eine G7 und das gleiche festgestellt.


Schöne Grüße Hajo
G7
hajogt
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 5
Registriert: 22.04.2008, 11:42
Wohnort: Frechen

Beitragvon msl » 16.06.2008, 15:36

@hajogt

Canon geht da manchmal seltsame Wege. Es gibt Kameras, bei denen werden die Variablen des jeweilig anderen Prozessortyp verwendet. Also keine Aufregung. Es ist alles im grünen Bereich.

Gruß msl
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4567
Bilder: 271
Registriert: 22.02.2008, 11:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

VorherigeNächste

Zurück zu Code-Ecke

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 14 Gäste

cron