1

私は単純なモーション検出プログラムを書いていますが、クロスプラットフォームにしたいので、さまざまな形式 (特に wmv と mpeg) でビデオをロードする簡単な方法を提供するため、python と pyglet ライブラリを使用しています。これまでのところ、ムービーをロードしてウィンドウで再生する以下のコードがあります。1) 時間 t と t-1 でフレームを取得する 2) 減算を行って、モーション検出でアクティブなピクセルを確認します。

フレームを取得してフレームをスキップする方法についてのアイデアはありますか?ピクセル値を numpy または pyglet から直接マトリックスに入れることは可能ですか? または、ピグレット以外のものを使用することを検討する必要がありますか?

ありがとうクアイワイ


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()  
4

1 に答える 1

0

おそらく、各フレームが単純な画像であるフレームのリストである source.get_animation().frames を使用して、再生機能をスキップし、手動でビデオ/アニメーションをステップ実行する必要があるようです。これは大規模なビデオでは実際には実用的ではないと推測していますが、それは一般的に Python で処理する必要があるものではありません。

于 2010-03-29T02:00:54.013 に答える