SX200 Bewegungserkennung Autofocus

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

SX200 Bewegungserkennung Autofocus

Beitragvon dulap » 05.11.2009, 13:15

Hallo :D

hab mal versucht mit md_detect_motion was zu realisieren , geht aber nicht so wie ich will :x

was mus ich machen das der Skript nicht immer Focusiert , sonder erst wenn die Distanz von ein objekt zu andere nicht mehr gleich ist so wie in das Video zu sehen ist ?



Code: Alles auswählen
@title Bewegungserkennung  Autofocus By Dulap

@param a Anzahl Spalten
@default a 9

@param b Anzahl Zeilen
@default b 9

@param c Schwellwert (0-255)
@default c 20

@param d Zeitliche in mSekunden
@default d 1


@param i Maske 0=ohne 1=inkl 2=exkl
@default i 1
@param j - linke Spalte
@default j 5
@param k - obere Zeile
@default k 5
@param l - rechte Spalte
@default l 1
@param m - untere Zeile
@default m 1



if a<1 then a=1
if b<1 then b=1
if c<1 then c=1
if c<1 then c=1
if i<0 then i=0
if i>2 then i=2
if j<0 then j=0
if j>a then j=a
if k<0 then k=0
if k>b then k=b
if l<j then l=j
if l>a then l=a
if m<k then m=k
if m>b then m=b

:loop
t=0

md_detect_motion a, b, d,6000, 1,c, 1, t,i, j, k, l, m, 2, o, 0
get_prop 6 q
if q=0 then set_prop 6 1

if t>0 then goto "af"
goto "loop"


:af
set_aflock 1
goto "loop"
return

end
Zuletzt geändert von dulap am 11.11.2009, 17:04, insgesamt 1-mal geändert.
dulap
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 32
Registriert: 22.09.2009, 12:35

Re: SX200 Bewegungserkennung Autofocus

Beitragvon gehtnix » 05.11.2009, 19:34

dulap hat geschrieben:was mus ich machen das der Skript nicht immer Focusiert , sonder erst wenn die Distanz von ein objekt zu andere nicht mehr gleich ist
Rein theoretisch wäre es möglich zwei verschiedene Entfernungen im Skript abzuspeichern. z.B 50cm für Rot und 100cm für Weiß.
Nun lieferte aber MD nur zurück das sich was verändert hat. Mit MD kann ich nicht auswerten wo sich auf dem LCD was bewegt. Das Skript bzw. CHDK müsste ja nun unterscheiden dass sich z.B Rot bewegt hat, also 50cm Fokus setzen, usw. Was wäre wenn Rot sich auf die Position von Weiß bewegt? Da stimmen die 50cm nicht mehr. Da gehtnix!

Ein andere Ansatz wäre es mit dem Hyperfocalen Fokus von HYPER-Blitz.bas zu versuchen. Das Skript muss aber dann auf die SX200 angepasst werden. Kamera weiter weg stellen und die passende Blende und den Hyperfocalen dazu suchen lassen. Dann wären beide Objekte scharf abgebildet. Da spielt dann auch MD mit.

gruß gehtnix
Bild
Benutzeravatar
gehtnix
CHDK-Legende
CHDK-Legende
 
Beiträge: 2406
Bilder: 8
Registriert: 17.04.2008, 13:42
Wohnort: München
Kamera(s): A610 100e+f + IXUS50 101b

Beitragvon dulap » 05.11.2009, 20:47

Danke für die erklärung

Werde mal sehen wie HYPER-Blitz.bas Zusammengesetzt ist
dulap
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 32
Registriert: 22.09.2009, 12:35

Beitragvon dulap » 09.11.2009, 15:20

Hallo

ich komme nicht weiter
hab mit ROT dazu gemacht , aber wenn ich auf shoot_half drucke geht das skript aus :(

kann mir einer helfen ?

thx

CODE

rem SX200 By Dulap
@title Video
@param a Anzahl Spalten
@default a 3
@param b Anzahl Zeilen
@default b 3
@param c Schwellwert (0-255)
@default c 10
@param d Zeitliche in mSekunden
@default d 0
@param i Maske 0=ohne 1=inkl 2=exkl
@default i 1
@param j - linke Spalte
@default j 1
@param k - obere Zeile
@default k 1
@param l - rechte Spalte
@default l 5
@param m - untere Zeile
@default m 5
@param x MD
@default x 1


if a<1 then a=1
if b<1 then b=1
if c<1 then c=1
if c<1 then c=1
if i<0 then i=0
if i>2 then i=2
if j<0 then j=0
if j>a then j=a
if k<0 then k=0
if k>b then k=b
if l<j then l=j
if l>a then l=a
if m<k then m=k
if m>b then m=b


get_prop 6 q
if q=0 then set_prop 6 1

z=50
k=13

get_focus u
o=0

do
o=o+1
p=o*o*(o+1)*(o+1)+80
until u<p

v=o

press "shoot_half"
sleep 800
click "shoot_full"
set_zoom 0
print "SET - Stop"
:loop


wait_click

if is_key "zoom_in" then goto "in"
if is_key "zoom_out" then goto "out"
if is_key "shoot_half" then set_aflock 1



md_detect_motion a, b, d,6000, 1,c, 1, t,i, j, k, l, m, 2, o, 0
get_prop 6 y
if y=0 then set_prop 6 1
sleep 500
if x>0 then goto then "af"
goto "loop"



:af
set_aflock 1
goto "loop"
return


:in
if z<0 then let z=1
if z>k then let z=k
set_zoom_rel z
sleep 100
set_aflock 1
get_zoom t
print "zoom", t; "/" k
goto "loop"


:out
if z<0 then let z=1
if z>k then let z=k
set_zoom_rel -z
sleep 100
set_aflock 1
get_zoom t
print "zoom", t; "/" k
goto "loop"


:end
click "shoot_full"
end

end
wait_click
cls
return

code end
Canon SX200is CHDK -akt. Version
dulap
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 32
Registriert: 22.09.2009, 12:35

Beitragvon gehtnix » 09.11.2009, 19:32

Hi Dulap,

Du schreibst im Titel "Bewegungserkennung Autofocus". Im uBasic-Archiv liegen 7 funktionierende MD-Skripte. Warum jetzt noch ein achtes MD-Skript?

Den Code bitte oben mit SYNTAX-uBasic eintragen! Das Rot hilft gar nicht weiter! Das kannst Du nachträglich editieren.

dulap hat geschrieben:ich komme nicht weiter
Nicht nur Du, das Skript kommt auch nicht weiter.

Unter Parameter steht "k - obere Zeile 1" und ein paar Zeilen weiter k=13, das kann nun mal nicht funktionieren.
Das "if q=0 then set_prop 6 1" geht gar nicht, Zeile der PropertyCase:
"6 RO Focus Mode (0,1,3,4,5 = Normal, Macro, Infinity, Manual, Super Macro [SX10]) "
RO, read only, ist nur lesbar!

Was willst Du damit
Syntax: [ Download ] [ Verstecken ]
Benutze uBasic Syntax Highlighting
do

o=o+1

p=o*o*(o+1)*(o+1)+80

until u<p



v=o
Erstellt in 0.002 Sekunden, mit GeSHi 1.0.8.9

v und p werden nirgends im Skript benötigt!
o="o Empfindlichkeit (Pixel)", die kannst nicht verwenden.

Was willst Du überhaupt machen?

Allgemein wäre es wohl besser mit einem "kleinen" Skript mal anzufangen.

gruß gehtnix
Bild
Benutzeravatar
gehtnix
CHDK-Legende
CHDK-Legende
 
Beiträge: 2406
Bilder: 8
Registriert: 17.04.2008, 13:42
Wohnort: München
Kamera(s): A610 100e+f + IXUS50 101b

Beitragvon dulap » 09.11.2009, 19:55

auf ein neues :D

ich mochte beite skripte zu einen einziegen machen .
und get_prop 6 q if q=0 then set_prop 6 5 geht ohne probleme


Code: Alles auswählen
rem SX200 By Dulap
@title zoom / focus in video

s=15
z=15
y=5

get_focus u
o=0

get_prop 6 q
if q=0 then set_prop 6 1

press "shoot_half"
sleep 800
click "shoot_full"

print "SET - Stop Rec"
print "Shoot Half - Auto Focus"

:loop


wait_click

if is_key "zoom_in" then goto "in"
if is_key "zoom_out" then goto "out"
if is_key "up" then goto "focus_1"
if is_key "down" then goto "focus_2"

if is_key "shoot_half" then set_aflock 1

if is_key "set" then goto "end"

if is_key "menu" then goto "menu_focus"
if is_key "display" then goto "display_focus"

goto "loop"


:in
if z<0 then z=1
if z>13 then z=13
set_zoom_rel z
get_zoom r
set_zoom_speed y
sleep 100
set_aflock 1
print "zoom ", r
print "zoom speed ", y
goto "loop"

:out
if z<0 then z=1
if z>13 then z=13
set_zoom_rel -z
get_zoom r
set_zoom_speed y
sleep 100
set_aflock 1
print "zoom ", r
goto "loop"

:focus_1
set_zoom_rel 15
set_zoom_speed y
set_aflock 1
goto "loop"
return

:focus_2
set_zoom_rel -15
set_zoom_speed y
set_aflock 1
goto "loop"
return

:menu_focus
v=v+1
gosub "focus_DISP/MENU"
goto "loop"

:display_focus
v=v-1
gosub "focus_DISP/MENU"
goto "loop"

:focus_DISP/MENU
u=(v*v*v*v)
if v>=12 then u=65535
if v<1 then let v=1
if v>20 then let v=20
set_focus u
get_focus t
print "focus", v; "/20 ("t; " mm)"
return

:end
click "shoot_full"
end

end

wait_click
cls
return


Code: Alles auswählen

@title Bewegungserkennung By Dulap

:loop
t=0

md_detect_motion 3, 3, 1,60000, 1,25, 1, t, 1, 1, 1, 3, 3, 0, 20, 1000

get_prop 6 q
if q=0 then set_prop 6 5

if t>0 then goto "af"
goto "loop"


:af
set_aflock 1
goto "loop"
return

end
Zuletzt geändert von dulap am 09.11.2009, 20:10, insgesamt 6-mal geändert.
Canon SX200is CHDK -akt. Version
dulap
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 32
Registriert: 22.09.2009, 12:35

Beitragvon Knips » 09.11.2009, 19:55

@dulap:

Du machst es vielen Lesern einfacher, wenn du dein Code mit dem Foren-Internen Syntax-Highliter postest.

Dazu einfach:
Code: Alles auswählen
uBasic:
[ uBasic ]
Code goes here
[ /uBasic ]

Lua:
[ lua ]
Code goes here
[ /lua ]


Leerzeichen innerhalb der eckigen Tag-Klammern dürfen nicht sein.
Gruß
Knips

Powershot A610 100f+ 1GB Kingston SD-Card / 4GB Transcend + CHDK 1.1.0-451 DE
Bildbearbeitung: Photshop CS3 + CS5 | Lightroom 3.0 | GIMP 2.6 | Paint Shop Pro 6
Benutzeravatar
Knips
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 162
Bilder: 0
Registriert: 29.11.2008, 18:28
Wohnort: Altes Land (Region)
Kamera(s): A610 100f - CHDK 1-1-0-r636-DE

Beitragvon gehtnix » 10.11.2009, 15:42

dulap hat geschrieben:und get_prop 6 q if q=0 then set_prop 6 5 geht ohne probleme
Dann setze den Fokus danach mal auf 200mm und ein shoot dahinter.
Dann wiederholen mit MF über Tasten ohne set-prop.
Und nun mal die EXIF ansehen Bild

gruß gehtnix
Bild
Benutzeravatar
gehtnix
CHDK-Legende
CHDK-Legende
 
Beiträge: 2406
Bilder: 8
Registriert: 17.04.2008, 13:42
Wohnort: München
Kamera(s): A610 100e+f + IXUS50 101b

Beitragvon dulap » 10.11.2009, 15:48

da scheinbar so schwer ist , was mus ich machen das gleich nach Starten die Aufnahme beginnt ?

wo muß ich click "shoot_full" eintragen damit das in loop geht ?


Syntax: [ Download ] [ Verstecken ]
Benutze uBasic Syntax Highlighting

@title Bewegungserkennung By Dulap



:loop

t=0



md_detect_motion 3, 3, 1,60000, 1,25, 1, t, 1, 1, 1, 3, 3, 0, 20, 1000



get_prop 6 q

if q=0 then set_prop 6 5



if t>0 then goto "af"

goto "loop"





:af

set_aflock 1

goto "loop"

return



end

 
Erstellt in 0.002 Sekunden, mit GeSHi 1.0.8.9
Canon SX200is CHDK -akt. Version
dulap
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 32
Registriert: 22.09.2009, 12:35

Beitragvon gehtnix » 10.11.2009, 16:35

dulap hat geschrieben:da scheinbar so schwer ist , was mus ich machen das gleich nach Starten die Aufnahme beginnt ?
Schwer wird es, wenn man gleich ein Wolkenkuckushaus bauen will aber nicht die Basis kennt!

Fang mal einfach an! Testen auf der Kamera. Habe MD auf 10sek zurück gesetzt.

Syntax: [ Download ] [ Verstecken ]
Benutze uBasic Syntax Highlighting
@title Bewegungserkennung By Dulap

t=0



:loop

    md_detect_motion 3, 3, 1,10000, 1,25, 1, t, 1, 1, 1, 3, 3, 0, 20, 1000



    shoot



goto "loop"



end



 
Erstellt in 0.002 Sekunden, mit GeSHi 1.0.8.9

Und da kannst Du dann Stück für Stück erweitern. Und immer wieder testen!

Wenn Du nicht weißt wo das "click "shoot_full"" hin soll, da frage ich mich aber schon ob Du weißt was der Code bedeutet. CHDK-Handbuch lesen!

Es macht keinen Sinn set_prop zu setzen und dann noch aflock zu setzen!

gruß gehtnix
Bild
Benutzeravatar
gehtnix
CHDK-Legende
CHDK-Legende
 
Beiträge: 2406
Bilder: 8
Registriert: 17.04.2008, 13:42
Wohnort: München
Kamera(s): A610 100e+f + IXUS50 101b

Beitragvon dulap » 10.11.2009, 17:45

gehtnix hat geschrieben:
dulap hat geschrieben:da scheinbar so schwer ist , was mus ich machen das gleich nach Starten die Aufnahme beginnt ?
Schwer wird es, wenn man gleich ein Wolkenkuckushaus bauen will aber nicht die Basis kennt!


Wenn Du nicht weißt wo das "click "shoot_full"" hin soll, da frage ich mich aber schon ob Du weißt was der Code bedeutet. CHDK-Handbuch lesen!


gruß gehtnix



Ich weiß schon wo das hin kommt (denk ich :D )

aber ich will das die Video Aufnamhe nicht immer AN/AUS geht , es geht hier um Video Mode und nicht Photo mode
was ich meine ist das wärend Aufnahme das er immer wieder fokussiert , und nicht immer von anfang an oder so .






Syntax: [ Download ] [ Verstecken ]
Benutze uBasic Syntax Highlighting

@title Bewegungserkennung By Dulap



:loop

t=0



md_detect_motion 3, 3, 1, 10000, 1,10, 1, t, 1, 1, 1, 3, 3, 0, 20, 1000



click "shoot_full"





if t>0 then goto "af"



goto "loop"



:af

sleep 800

set_aflock 1

goto "loop"

return



end

 
Erstellt in 0.003 Sekunden, mit GeSHi 1.0.8.9


PS: Sorry mein Deutsch reicht nicht aus , das ich erkläre was ich meine :oops:
Canon SX200is CHDK -akt. Version
dulap
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 32
Registriert: 22.09.2009, 12:35

Beitragvon gehtnix » 10.11.2009, 18:39

dulap hat geschrieben:PS: Sorry mein Deutsch reicht nicht aus , das ich erkläre was ich meine :oops:
Es liegt nicht an Deinem Deutsch.

Ist aber alles schon in MD-Six.bas vorhanden!
Video, Dauer vom Video, vorfokussieren.

gruß gehtnix
Bild
Benutzeravatar
gehtnix
CHDK-Legende
CHDK-Legende
 
Beiträge: 2406
Bilder: 8
Registriert: 17.04.2008, 13:42
Wohnort: München
Kamera(s): A610 100e+f + IXUS50 101b

Beitragvon dulap » 10.11.2009, 21:15

gehtnix hat geschrieben:Ist aber alles schon in MD-Six.bas vorhanden!
Video, Dauer vom Video, vorfokussieren.

gruß gehtnix


Ne leider auch nicht :cry: naja egal

THx trotzdem
Canon SX200is CHDK -akt. Version
dulap
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 32
Registriert: 22.09.2009, 12:35

Beitragvon gehtnix » 10.11.2009, 23:01

dulap hat geschrieben:Ne leider auch nicht :cry: naja egal
Bild Nu lass mal nicht gleich die Backen hängen.

- Kamera auf Movie einstellen
- Skript laden
- keine Änderung der Parameter! oder besser noch, Lade Standardparameter!
- Skript starten
- vor dem Objektiv was bewegen, moven>Movie :D
- Skript löst aus
- 5 Sekunden Movie-Aufzeichnung wird gemacht
- Kamera geht wieder auf die Lauer
- was willst Du mehr :?:

gruß gehtnix
Bild
Benutzeravatar
gehtnix
CHDK-Legende
CHDK-Legende
 
Beiträge: 2406
Bilder: 8
Registriert: 17.04.2008, 13:42
Wohnort: München
Kamera(s): A610 100e+f + IXUS50 101b

Beitragvon msl » 10.11.2009, 23:35

Hallo,

wenn ich das, was dulap schreibt, richtig interpretiere, will er während der Video-Aufzeichnung per Skript fokussieren und nicht vor Aufnahme. Und da fangen die Probleme an, weil das wohl nicht gehen wird.

Und dulap, wenn Du eine Videoaufzeichnung Bewegungserkennung skripten willst, muss Du die Dauer der Videoaufzeichung auch programmieren (sleep) und danch auch ausschalten. Sonst wird logischerweise immer an- und ausgeschalten.

Und noch etwas: Die Propcase-Variable 6 (DigicIII u. IV) lässt sich nicht setzen. Man kann einen Wert eingeben. Dieser wird aber nicht übernommen. Die einzige Möglichkeit, die besteht, per Tastenklick die entsprechende Taste schalten und Propcase 6 abfragen, bis der richtige Wert verfügbar ist.

Gruß msl
■ "Hey you, don't tell me there's no hope at all. Together we stand, divided we fall."CHDK inside FAQCHDK-Neuigkeiten auf Twitter
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4512
Bilder: 271
Registriert: 22.02.2008, 12:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Nächste

Zurück zu Code-Ecke

Wer ist online?

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