Sonntag, 30. Juli 2006
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.
... comment
avgp,
Sonntag, 30. Juli 2006, 21:42
Uäh, wie ekelig der Sourcecode uneingerückt ausschaut.
Wer den Sourcecode sauber eingerückt haben will, sollte mir einfach irgendwie seine EMail-Adresse mitteilen, dann gibts das ganze nochmal "in Schönschrift"
GreetZ AVGP
Wer den Sourcecode sauber eingerückt haben will, sollte mir einfach irgendwie seine EMail-Adresse mitteilen, dann gibts das ganze nochmal "in Schönschrift"
GreetZ AVGP
... link
... comment