вычисление движения из видео с использованием pyglet в python - PullRequest
1 голос
/ 28 марта 2010

Я пишу простую программу обнаружения движения, но я хочу, чтобы она была кроссплатформенной, поэтому я использую python и библиотеку pyglet, поскольку она предоставляет простой способ загрузки видео в различных форматах (особенно wmv и mpeg). Пока у меня есть код, приведенный ниже, который загружает фильм и воспроизводит его в окне. Теперь мне нужно: 1) захват кадра в моменты времени t и t-1 2) сделать вычитание, чтобы увидеть, какие пиксели активны для обнаружения движения.

есть какие-нибудь идеи о том, как захватывать кадры и пропускать кадры, и можно ли поместить значения пикселей в матрицу в виде numpy или что-то непосредственно из pyglet? или стоит заняться чем-то другим, кроме pyglet?

спасибо 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()  

1 Ответ

0 голосов
/ 29 марта 2010

Мне кажется, что вам нужно пропустить функцию воспроизведения и вручную просмотреть видео / анимацию, возможно, используя source.get_animation (). Frames, который представляет собой список кадров, где каждый кадр является простым изображением. Я предполагаю, что на больших видео это не будет практичным, но это, как правило, совсем не то, что вы должны обрабатывать в Python.

...