Sonntag, 30. Juli 2006
Der erste Sourcecode für die Webcam
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.

... link (1 Kommentar)   ... comment


Home-Made "EyeToy(tm)"
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

... link (2 Kommentare)   ... comment