在 python 中使用 pyglet 从视频中计算运动
Posted
技术标签:
【中文标题】在 python 中使用 pyglet 从视频中计算运动【英文标题】:motion computation from video using pyglet in python 【发布时间】:2010-03-28 08:00:56 【问题描述】:我正在编写一个简单的运动检测程序,但我希望它是跨平台的,所以我使用 python 和 pyglet 库,因为它提供了一种简单的方法来加载不同格式的视频(特别是 wmv 和 mpeg)。到目前为止,我有下面给出的代码,它加载电影并在窗口中播放。现在我需要: 1) 在时间 t 和 t-1 抓取帧 2)做一个减法,看看哪些像素是活动检测的。
关于如何抓取帧和跳过帧的任何想法,是否可以将像素值放入 numpy 或直接来自 pyglet 的矩阵中?还是应该考虑使用 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()
【问题讨论】:
你看过***.com/questions/2348151/…吗? 【参考方案1】:在我看来,您似乎必须跳过播放功能并手动单步播放视频/动画,可能使用 source.get_animation().frames ,这是一个帧列表,其中每一帧都是一个简单的图像。我猜这对于大型视频来说实际上并不实用,但这通常不是你应该在 Python 中处理的事情。
【讨论】:
以上是关于在 python 中使用 pyglet 从视频中计算运动的主要内容,如果未能解决你的问题,请参考以下文章