【发布时间】:2014-09-29 12:26:06
【问题描述】:
首先我想说的是,我已经阅读了很多关于这方面的内容,并且我已经学会了很多方法来做到这一点,但是我无法在 linux 中做到这一点。
我的项目是 arduino 的流光溢彩,所以我需要截取桌面的屏幕截图并分析其颜色。
一开始,我使用 Processing 2.0 和“java.awt”中的“Robot”类。最初我可以每秒拍摄 5 帧,然后我得到了 13fps。这行得通,但我想要更多的性能,所以我开始阅读。
在 Windows 或 Mac 中,您拥有可让您直接访问“frameBuffer”的库,因此您可以非常“轻松”且非常快速地截取屏幕截图。
在 Ubuntu 中,我尝试了 Python 与 Gtk、PIL、Qt...,最快的方法是 GTK,但我也只能有大约 15fps。
我的问题是:我想跨平台做,但我更喜欢我的程序一开始在 Linux 中运行,然后在 Windows 中运行(我不太喜欢它:P)。
那么,第一个问题:python 是否能够提供这种性能?因为我认为 C++ 可能是一个更好的选择。
第二个问题:我需要做什么?我已经阅读了有关 Xlib (X11) 的信息,但找不到让我截屏的文档。我也知道,例如 FFmpeg,它是一个强大的工具,但我不知道如何实现它。
我希望你能帮助我(如果我犯了任何错误,请原谅我)。
【问题讨论】:
-
manpages.ubuntu.com/manpages/hardy/man1/fbgrab.1.html你试过fbgrab吗?也许这会对你有所帮助,只是一个想法。
-
@cerkiewny 它可能很有用,但它是从终端启动并将 img 保存到我必须再次读取的文件中(它可能会更慢?),但我们可以阅读代码并看看如何做到了。
-
@pirobtumen 您可以通过简单的阅读直接访问 /dev/fb1,但是用户空间中的任何活动都需要从帧缓冲区复制大量内核空间数据。我同意你可以做得比保存到文件更好。
-
@cerkiewny 我可以尝试测量速度。
标签: python c++ linux ffmpeg screenshot