【问题标题】:Grabbing a random frame from a webcam with GStreamer in Python在 Python 中使用 GStreamer 从网络摄像头抓取随机帧
【发布时间】:2011-01-21 04:24:18
【问题描述】:

我正在尝试编写一个程序来通过解释来自网络摄像头的帧来控制机器人,并且发生在 GStreamer 上。

在此页面的帮助下,我已经能够使用 GStreamer 从网络摄像头以 Python 流式传输视频: http://www.ndeschildre.net/2008/04/04/python-power/

但是,我不知道如何从 Pipeline 请求单个 RGB 编码帧,虽然我设法找到并阅读了一些文档,但我没有找到明显的答案。

有人有什么想法吗?

编辑:我首先尝试使用 OpenCV 来解决这个问题,但是缓冲区没有保持原样,并且导致连续图像无法从缓冲区的左上角开始。 (操作系统为 Ubuntu Linux)

【问题讨论】:

    标签: python webcam snapshot gstreamer


    【解决方案1】:

    查看 cheese 的源代码,Gnome photobooth 应用程序。

    你也可以试试usersink。

    【讨论】:

    • 您能详细说明一下usersink的使用吗?
    • usersink 基本上让您的代码处理原始 gstreamer 帧。唉,我无法详细说明将它用于视频。 Cheese 应用程序可以从网络摄像头中获取静止图像,并且充满了有用的示例代码。
    • 感谢您,感谢 Cheese 的消息来源,我想我已经掌握了它。 (尚未正式解决,但您指出了我正确的方向)
    【解决方案2】:

    我听说 OpenCV 的 Python 绑定取得了一些成功。这是其中之一:http://blog.jozilla.net/2008/06/27/fun-with-python-opencv-and-face-detection/

    【讨论】:

    • 我开始使用 OpenCV 的 Python 绑定,但必须升级操作系统版本才能让网络摄像头工作,但它突然不再工作了。 (图片没有可靠地从缓冲区复制,所以我放弃了)
    • 您是否查看过 Willow Garage 的 OpenCV 绑定 opencv.willowgarage.com/wiki/PythonInterface?有很多“自制”的 Python 绑定,我不确定......
    • 什么操作系统?如果您在 Ubuntu 上,您可以通过“apt-get install python-opencv”获得 OpenCV 和 python 绑定的旧版本(不是 2.0 版),我可以在不进行黑客攻击的情况下使其工作 这里是一个示例脚本几个月前我工作了一点:cs.umass.edu/~timv/opencv-example.py 它是基于我在网上找到的,但我失去了参考.. 向原作者道歉。那里有相当多的“不相关”代码,因为我想将 OpenCV 图像转换为 PIL 图像。这也让它变得很慢。
    • 还有一件事。还有一个您可能感兴趣的项目:code.astraw.com/projects/motmot/fview.html 我不久前将其添加为书签,并没有真正深入研究它。
    • 不幸的是,问题在于 OpenCV,而不是它的使用方式。关于缓冲区在帧之间没有正确索引的问题。您的代码似乎在做与 opencv.adapters.Ipl2PIL() 相同的事情,但速度要慢得多。这就是我尝试使用 GStreamer 的原因。
    猜你喜欢
    • 2013-09-25
    • 2011-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-16
    • 2023-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多