... newer stories
Sonntag, 30. Juli 2006
Shit happens!
avgp, 23:16h
MIST. Ich habe ja immernoch die Hoffnung, dass es irgendwie, durch Zufall,Chaostheorie oder was-auch-immer möglich sein könnte, dass ich irgendwie an einen günstigen,kleinen Laptop komme...Sony Vaio oder JVC, die ganz kleinen Dinger, deren Preis direkt umgekehrt-proportional zu ihrer Größe ist...
eben habe ich eine Gelegenheit dazu verpasst: Ebay...Sony Vaio...alles tip-top, auch gewerblicher Händler...186 Euro. Verdammt...EGAL...was solls xD
eben habe ich eine Gelegenheit dazu verpasst: Ebay...Sony Vaio...alles tip-top, auch gewerblicher Händler...186 Euro. Verdammt...EGAL...was solls xD
... link (0 Kommentare) ... comment
Der erste Sourcecode für die Webcam
avgp, 21:41h
Also, wenn ihr jetzt alles korrekt installiert habt, dann müsstet ihr jetzt meinen kleinen Beispielcode via Python nutzen können. Ihr solltet dann ein Fenster sehen, auf dem das Webcambild eurer Webcam zu sehen ist. Zusätzlich befindet sich dann irgendwo auf dem Bild ein gelbes Rechteck. Wenn ihr in dieses Rechteck "hineinwinkt" oder so - also eine Bewegung innerhalb dieses Rechtecks stattfindet, sollte es sich irgendwo anders hin positionieren und wieder auf eine Bewegung "warten". Lange Rede, kurzer Sinn, hier ist der Sourcecode:
# -*- coding: cp1252 -*-
from VideoCapture import Device
import ImageDraw
import sys
import pygame
def motion(img1, img2, pix_threshold=50, img_threshold=10):
#Schaun wir mal, ob wir eine Bewegung vorliegen haben...
if not img1 or not img2: return False
img1 = img1.getdata()
img2 = img2.getdata()
pixel_count = len(img1)
pixdiff = 0
for i in range(pixel_count):
if abs(sum(img1[i]) - sum(img2[i])) > pix_threshold:
pixdiff += 1
diffperc = pixdiff / (pixel_count/100)
if diffperc > img_threshold:
# motion detected
return True
pygame.init()
size = (640,480)
#Her mit der Kamera
cam = Device()
screen = pygame.display.set_mode(size)
#Das wird unser Ziel-Rechteck
target = None
target_x = random.randint(0,540)
target_y = random.randint(0,380)
while 1:
for event in pygame.event.get():
if event.type == pygame.QUIT: sys.exit()
camshot = cam.getImage()
#wir wollen jetzt überprüfen, ob in den aktuellen Zielkoordinaten eine Bewegung stattfand
target2 = camshot.crop((target_x,target_y,target_x+100,target_y+100))
draw = ImageDraw.Draw(camshot)
if diff_image(target, target2):
draw.rectangle((target_x,target_y,target_x+100,target_y+100), fill=255)
target_x = random.randint(0,540)
target_y = random.randint(0,380)
else:
draw.rectangle((target_x,target_y,target_x+100,target_y+100), outline=255)
target = target2 #Macht das "neue" Targetbild zum "alten"
camshot = pygame.image.fromstring(camshot.tostring(), size, "RGB")
screen.blit(camshot, (0,0))
pygame.display.flip()
...kopiert diesen Teil einfach in eine neue Textdatei, nennt sie "Example.py" und klickt doppelt drauf. Python sollte sich jetzt starten und das Ganze ausführen.
Ich konnte die Source noch nicht testen, mache ich aber nachher noch. Ich wünsch euch schonmal viel Spaß mit unserem ersten gemeinsamen Webcamgame.
Ihr seid jetzt übrigens auf meinem aktuellen Wissenstand und ab morgen (oder vllt. auch nachher) werde ich Weiteres erläutern.
# -*- coding: cp1252 -*-
from VideoCapture import Device
import ImageDraw
import sys
import pygame
def motion(img1, img2, pix_threshold=50, img_threshold=10):
#Schaun wir mal, ob wir eine Bewegung vorliegen haben...
if not img1 or not img2: return False
img1 = img1.getdata()
img2 = img2.getdata()
pixel_count = len(img1)
pixdiff = 0
for i in range(pixel_count):
if abs(sum(img1[i]) - sum(img2[i])) > pix_threshold:
pixdiff += 1
diffperc = pixdiff / (pixel_count/100)
if diffperc > img_threshold:
# motion detected
return True
pygame.init()
size = (640,480)
#Her mit der Kamera
cam = Device()
screen = pygame.display.set_mode(size)
#Das wird unser Ziel-Rechteck
target = None
target_x = random.randint(0,540)
target_y = random.randint(0,380)
while 1:
for event in pygame.event.get():
if event.type == pygame.QUIT: sys.exit()
camshot = cam.getImage()
#wir wollen jetzt überprüfen, ob in den aktuellen Zielkoordinaten eine Bewegung stattfand
target2 = camshot.crop((target_x,target_y,target_x+100,target_y+100))
draw = ImageDraw.Draw(camshot)
if diff_image(target, target2):
draw.rectangle((target_x,target_y,target_x+100,target_y+100), fill=255)
target_x = random.randint(0,540)
target_y = random.randint(0,380)
else:
draw.rectangle((target_x,target_y,target_x+100,target_y+100), outline=255)
target = target2 #Macht das "neue" Targetbild zum "alten"
camshot = pygame.image.fromstring(camshot.tostring(), size, "RGB")
screen.blit(camshot, (0,0))
pygame.display.flip()
...kopiert diesen Teil einfach in eine neue Textdatei, nennt sie "Example.py" und klickt doppelt drauf. Python sollte sich jetzt starten und das Ganze ausführen.
Ich konnte die Source noch nicht testen, mache ich aber nachher noch. Ich wünsch euch schonmal viel Spaß mit unserem ersten gemeinsamen Webcamgame.
Ihr seid jetzt übrigens auf meinem aktuellen Wissenstand und ab morgen (oder vllt. auch nachher) werde ich Weiteres erläutern.
... link (1 Kommentar) ... comment
Home-Made "EyeToy(tm)"
avgp, 20:30h
Als erstes sei darauf hingewiesen, dass EyeToy(tm) ein eingetragenes Markenzeichen von Sony is. Aber einen besseren Begriff gibt es nunmal nicht, für das, was ich bzw. "wir" vorhaben.
Also das ist der Plan: Ich möchte euch zeigen, wie man ein Programm schreibt, dass die Bilder einer Webcam, wie viele sie auf ihrem Computertisch stehen haben, nimmt und sie daraufhin analysiert, wo sich seit dem aktuellen und dem letzten aufgenommenen Bild etwas verändert - also bewegt - hat. Ich habe daran schon herumgebastelt und auch etwas gegoogelt...
Wer mitwerkeln mag, der lese weiter:
Am einfachsten , meines Wissensstandes nach, ist der Webcam-Teil und das Drumherum in Python am leichtesten zu machen.
Python ist eine bequeme, mächtige Scriptsprache, mit der man viel anstellen kann!
Also besorgt euch zunächst Folgendes:
-Python von
http://www.python.org
-PIL (PythonImageLibrary) von http://www.pythonware.com/products/pil/
-PyGame (ZusatzLib für Spieleentwicklung mit Python)
von http://www.pygame.org
-VideoCapture (Lib für Videocapturing) von
http://videocapture.sourceforge.net/
und installiert das Alles.
Weiter gehts nachher oder morgen...:D
Also das ist der Plan: Ich möchte euch zeigen, wie man ein Programm schreibt, dass die Bilder einer Webcam, wie viele sie auf ihrem Computertisch stehen haben, nimmt und sie daraufhin analysiert, wo sich seit dem aktuellen und dem letzten aufgenommenen Bild etwas verändert - also bewegt - hat. Ich habe daran schon herumgebastelt und auch etwas gegoogelt...
Wer mitwerkeln mag, der lese weiter:
Am einfachsten , meines Wissensstandes nach, ist der Webcam-Teil und das Drumherum in Python am leichtesten zu machen.
Python ist eine bequeme, mächtige Scriptsprache, mit der man viel anstellen kann!
Also besorgt euch zunächst Folgendes:
-Python von
http://www.python.org
-PIL (PythonImageLibrary) von http://www.pythonware.com/products/pil/
-PyGame (ZusatzLib für Spieleentwicklung mit Python)
von http://www.pygame.org
-VideoCapture (Lib für Videocapturing) von
http://videocapture.sourceforge.net/
und installiert das Alles.
Weiter gehts nachher oder morgen...:D
... link (2 Kommentare) ... comment
Let's get going
avgp, 20:19h
Tja.
Öh.
Hier wären wir...was aus Langeweile so entstehen kann...
Wie dem auch sei: Wer bin ich? Ich bin AVGP ( neeeiiin, ehrlich? Boah, schau an, schau an) Ja gut, der Einstieg is etwas unbeholfen, aber so is das nunmal mit Blog-N00bs.
Also, ich mag ein Blog-N00b sein, aber dafür bin ich in anderen Dingen ziemlich gut *schulterklopf*. Mein Spezialgebiet ist die Programmierung - und auf dem Gebiet so ziemlich Alles, was dazugehört.
Nachdem ich vor mittlerweile 9 Jahren -damals 8- mit BASIC auf dem C64 angefangen habe, erweiterte ich mit 10 auf einem PC mein Können um die Sprache PASCAL, darauf folgte VisualBasic, dann C. Gleichzeitig begann ich mit JavaScript und HTML herumzuwerkeln.
Bald darauf, mit 12 war ich recht gut in alle dem und entdeckte BlitzBasic für mich. Wie ich inzwischen erfuhr, gibt es BlitzBasic in der Form, in der ich es kannte, gar nicht mehr. Da ich ab 14 mit BlitzBasic3D arbeitete und kurz darauf auf PureBasic und C++ umstieg, verfolgte ich BlitzBasic nicht weiter. Inzwischen gibt es nur noch BlitzBasic3D und eine neuere Variante des BlitzBasics - BlitzMax...die ich seltsam finde. Egal. Inzwischen sind unzählige Minispiele entstanden - von denen ich, mit Ausnahme eines - keins mehr habe. :( Schade. Aber dafür entwickelte ich mit 16 einige nützliche - und auch einige unnütze- Anwendungen. Etwa den Panelplayer, den man auch heute noch unter http://www.manaware.net/ herunterladen kann!
Vor etwa 1 1/2 Jahren habe ich mich dann auch der Assemblerprogrammierung gewidmet - sogar einen Bootloader und einen sehr,sehr kleinen Kernel für ein eigenes "Betriebssystem" geschrieben...wenn ich irgendwann mal wieder motiviert genug sein sollte, werde ich es fortsetzen und hier darüber berichten...
und schließlich vor einem 3/4 Jahr hatte ich dann mit der Programmierung auf PSP und GBA begonnen.
Ich habe vor kurzem angefangen mit Webcams und MotionDetection zu experimentieren (http://www.manaware.net/Downloads/download.php?Art=9)
und werde hier im Weiteren über alle interessanten Programmierthemen weiter berichten.
Öh.
Hier wären wir...was aus Langeweile so entstehen kann...
Wie dem auch sei: Wer bin ich? Ich bin AVGP ( neeeiiin, ehrlich? Boah, schau an, schau an) Ja gut, der Einstieg is etwas unbeholfen, aber so is das nunmal mit Blog-N00bs.
Also, ich mag ein Blog-N00b sein, aber dafür bin ich in anderen Dingen ziemlich gut *schulterklopf*. Mein Spezialgebiet ist die Programmierung - und auf dem Gebiet so ziemlich Alles, was dazugehört.
Nachdem ich vor mittlerweile 9 Jahren -damals 8- mit BASIC auf dem C64 angefangen habe, erweiterte ich mit 10 auf einem PC mein Können um die Sprache PASCAL, darauf folgte VisualBasic, dann C. Gleichzeitig begann ich mit JavaScript und HTML herumzuwerkeln.
Bald darauf, mit 12 war ich recht gut in alle dem und entdeckte BlitzBasic für mich. Wie ich inzwischen erfuhr, gibt es BlitzBasic in der Form, in der ich es kannte, gar nicht mehr. Da ich ab 14 mit BlitzBasic3D arbeitete und kurz darauf auf PureBasic und C++ umstieg, verfolgte ich BlitzBasic nicht weiter. Inzwischen gibt es nur noch BlitzBasic3D und eine neuere Variante des BlitzBasics - BlitzMax...die ich seltsam finde. Egal. Inzwischen sind unzählige Minispiele entstanden - von denen ich, mit Ausnahme eines - keins mehr habe. :( Schade. Aber dafür entwickelte ich mit 16 einige nützliche - und auch einige unnütze- Anwendungen. Etwa den Panelplayer, den man auch heute noch unter http://www.manaware.net/ herunterladen kann!
Vor etwa 1 1/2 Jahren habe ich mich dann auch der Assemblerprogrammierung gewidmet - sogar einen Bootloader und einen sehr,sehr kleinen Kernel für ein eigenes "Betriebssystem" geschrieben...wenn ich irgendwann mal wieder motiviert genug sein sollte, werde ich es fortsetzen und hier darüber berichten...
und schließlich vor einem 3/4 Jahr hatte ich dann mit der Programmierung auf PSP und GBA begonnen.
Ich habe vor kurzem angefangen mit Webcams und MotionDetection zu experimentieren (http://www.manaware.net/Downloads/download.php?Art=9)
und werde hier im Weiteren über alle interessanten Programmierthemen weiter berichten.
... link (1 Kommentar) ... comment