2010-03-28 23 views
1

J'écris un simple programme de détection de mouvement, mais je veux qu'il soit multi-plateforme donc im utilisant python et la bibliothèque pyglet, car il fournit un moyen simple de charger des vidéos dans différents formats (spécialement wmv et mpeg). Jusqu'à présent, j'ai le code ci-dessous qui charge le film et le joue dans une fenêtre. Maintenant, j'ai besoin de: 1) saisir le cadre à l'instant t et t-1 2) faire une soustraction pour voir quels pixels sont actifs pour la détection de mouvement.calcul de mouvement de la vidéo en utilisant pyglet en python

des idées sur la façon de saisir des cadres et de sauter des cadres et est-il possible de mettre les valeurs de pixels dans une matrice en numpy ou quelque chose directement à partir de pyglet? ou devrait chercher à utiliser autre chose que pyglet?

grâce kuaywai


import pyglet 
import sys 
window = pyglet.window.Window(resizable=True) 
window.set_minimum_size(320,200) 
window.set_caption('Motion detect 1.0') 
video_intro = pyglet.resource.media('movie1.wmv') 
player = pyglet.media.Player() 
player.queue(video_intro) 

print 'calculating movie size...' 
if not player.source or not player.source.video_format: 
    sys.exit 

myWidth = player.source.video_format.width 
myHeight = player.source.video_format.height 
if player.source.video_format.sample_aspect > 1: 
    myWidth *= player.source.video_format.sample_aspect 
elif player.source.video_format.sample_aspect < 1: 
    myHeight /= player.source.video_format.sample_aspect 

print 'its size is %d,%d' % (myWidth,myHeight) 
player.play() 

@window.event 
def on_draw(): 
     window.clear() 
     (w,h) = window.get_size() 
     player.get_texture().blit(0, h-myHeight, 
           width=myWidth, 
           height=myHeight) 

pyglet.app.run() 
+0

Avez-vous regardé http://stackoverflow.com/questions/2348151/webcam-motion-tracking-with-python? – MattH

Répondre

0

Pour moi, il semble que vous devez ignorer la fonction de lecture et l'étape manuellement à travers la vidéo/animation, en utilisant peut-être source.get_animation(). Cadres qui est liste d'images où chaque image est une image simple. Je suppose que cela ne va pas être pratique avec de grosses vidéos, mais ce n'est généralement pas quelque chose que vous devriez gérer en Python.