Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Wolle-77 •--->


Anmeldedatum: 25.02.2003 Beiträge: 449 Wohnort: Geldern
|
Verfasst am: 20.04.2006 - 00:48 Titel: Bewegungsmelder Kameraüberwachung |
|
|
Hallo zusammen,
durch Tills Frage bin ich doch neugierig geworden auf das Thema mit dem Bewegungsmelder (siehe hier: http://www.fischer-bayern.de/phpBB2/viewtopic.php?t=2005 )
Damit es nicht untergeht, habe ich mal einen neuen Thread angefangen; was sicherlich Til recht freuen wird.
Also, hier meine Lösung, um einen visuellen Bewegungsmelder zu bauen. Gebraucht wird ein Intel-Mac mit iSight und Photo Booth als Programm; außerdem noch Photoshop CS(2) als Hilfe, welches das Histogramm liefert.
Ein wenig stolz bin ich schon, muß ich zugestehen; es funktioniert schon recht gut.
Mit den beiden anfangs festgelegten Werten müßt Ihr ein wenig spielen, um die Empfindlichkeit für Eure Umgebung richtig einzustellen.
Wenn Ihr einen Ordner "Stop" auf den Schreibtisch anlegt, hört das Script auf.
Code: |
property gesamtpixelabweicherlaubt : 40
property einzelpixelfarbabweicherlaubt : 75
set histogrammwerte1 to {}
set prognichtstop to false
repeat until prognichtstop is true
tell application "Photo Booth"
activate
tell application "System Events"
tell process "Photo Booth"
keystroke "t" using {command down, option down}
end tell
end tell
end tell
delay 0.5
repeat with i from 1 to 3
set letztesfoto to paragraph i of (do shell script "ls -t " & (quoted form of POSIX path of ((path to "cusr" as string) & "Pictures:Photo Booth")))
if ".jpg" is in letztesfoto then exit repeat
end repeat
tell application "Finder" to set letztesfoto to file letztesfoto of folder "Photo Booth" of folder "Pictures" of folder (path to "cusr")
tell application "Adobe Photoshop CS2"
open (letztesfoto as alias)
set histogrammwerte2 to histogram of document 1
close document 1 without saving
end tell
if histogrammwerte1 is {} then set histogrammwerte1 to histogrammwerte2
set abweichungen to 0
repeat with i from 1 to (count items of histogrammwerte1)
set farbwert to ((item i of histogrammwerte1) as integer) - ((item i of histogrammwerte2) as integer)
if farbwert < 0 then set farbwert to farbwert * -1
if farbwert is greater than or equal to einzelpixelfarbabweicherlaubt then set abweichungen to abweichungen + 1
end repeat
if abweichungen > gesamtpixelabweicherlaubt then
set histogrammwerte1 to histogrammwerte2
else
set histogrammwerte1 to histogrammwerte2
tell application "Finder" to delete letztesfoto
end if
delay 2
tell application "Finder" to set prognichtstop to (exists (folder "Stop" of desktop))
end repeat |
Das Script arbeitet unermüdlich -- wenn zwei Bilder gleich sind, dann wird das gerae aufgenommene weggeschmissen und das neue aber als Referenz genommen -- so können also allmähliche Lichtschwankungen wie das Tageslicht ausgeglichen werden.
Wenn das neue Bild anders ist außerhalb der Toleranz, so wird es behalten. Am Ende des Überwachungsvorganges einfach den Papierkorb entleeren und Photo Booth neu aufrufen -- dann habt Ihr alle wichtigen Bilder in der Sammlung, alle gleichen Bilder sind weg.
Ich hoffe, es kann jemand gebrauchen. Till, kannst Dich ja mal melden, wenn Du damit experementiert hast. _________________ Martin Wolter
--
Apple rocks the planet! |
|
Nach oben |
|
 |
iScript •---->


Anmeldedatum: 29.03.2001 Beiträge: 1116
|
Verfasst am: 20.04.2006 - 07:49 Titel: |
|
|
respekt, wolle
da hat dir der till ja einen nachmittag versaut
ist doch toll wenn sowas dabei rauskommt.
hast du eigentlich deine ursprüngliche idee, die vergleiche der bilder über die shell zu machen, auch verfolgt, oder bist du gleich auf photoshop los?
die shell hätte natürlich den vorteil, das kein photoshop benötigt würde.
ich könnte mir auch vorstellen, den vorderen teil deines scriptes zum bilder-schiessen an die software meiner digital-camera anzupassen.
mir würde dabei eine lösung ohne photoshop allerdings besser gefallen.
aber der gedanke ist ja schon mal angestossen. dafür schon mal danke. _________________ - anholn deit kriegen - |
|
Nach oben |
|
 |
Wolle-77 •--->


Anmeldedatum: 25.02.2003 Beiträge: 449 Wohnort: Geldern
|
Verfasst am: 20.04.2006 - 08:40 Titel: |
|
|
Hallo iScript, Hallo zusammen,
erst einmal eine leicht modifizierte Fassung:
Code: |
property gesamtpixelabweicherlaubt : 130
property einzelpixelfarbabweicherlaubt : 35
set histogrammwerte1 to {}
set prognichtstop to false
repeat until prognichtstop is true
tell application "Photo Booth"
activate
tell application "System Events"
tell process "Photo Booth"
keystroke "t" using {command down, option down}
end tell
end tell
end tell
delay 0.5
repeat with i from 1 to 3
set letztesfoto to paragraph i of (do shell script "ls -t " & (quoted form of POSIX path of ((path to "cusr" as string) & "Pictures:Photo Booth")))
if ".jpg" is in letztesfoto then exit repeat
end repeat
tell application "Finder" to set letztesfoto to file letztesfoto of folder "Photo Booth" of folder "Pictures" of folder (path to "cusr")
tell application "Adobe Photoshop CS2"
open (letztesfoto as alias)
set histogrammwerte2 to histogram of document 1
close document 1 without saving
end tell
if histogrammwerte1 is {} then set histogrammwerte1 to histogrammwerte2
set abweichungen to 0
repeat with i from 1 to (count items of histogrammwerte1)
set farbwert to ((item i of histogrammwerte1) as integer) - ((item i of histogrammwerte2) as integer)
if farbwert < 0 then set farbwert to farbwert * -1
if farbwert is greater than or equal to einzelpixelfarbabweicherlaubt then set abweichungen to abweichungen + 1
end repeat
if abweichungen > gesamtpixelabweicherlaubt then
set histogrammwerte1 to histogrammwerte2
say "Hi There! You are in Picture!"
else
set histogrammwerte1 to histogrammwerte2
do shell script "rm " & quoted form of POSIX path of (letztesfoto as alias)
end if
delay 2
tell application "Finder" to set prognichtstop to (exists (folder "Stop" of desktop))
end repeat |
So, damit hat das Papierkorbgeräusch ein Ende und es passiert etwas (Es kommt "Hi There..." aus dem Lautsprecher, wenn etwas ins Bild gerät.
So, dann zu iScripts Frage. Natürlich habe ich versucht, einen Bildabgleich per Shell vorzunehmen, aber das kann man so erstmal vergessen. Der Weg über den Helligkeitsverlauf (Histogramm) ist erstens gut und mathematisch über einen Wertevergleich ausmessbar und da liefert Photoshop das direkt als Liste.
Wenn jemand weiß, wie man da anders drankommt -- bitte, gerne her damit. Auch ich hätte lieber eine unabhängige Lösung...
Das (kleine) Problem ist noch, daß man die ganzen gelöschten Fotos aus Photo Booth noch entfernen muß... _________________ Martin Wolter
--
Apple rocks the planet! |
|
Nach oben |
|
 |
jiuer7845 •---->

Anmeldedatum: 06.04.2021 Beiträge: 521
|
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2002 phpBB Group Deutsche Übersetzung von phpBB.de
|
|
|