【问题标题】:How to capture screen on Wayland(Gnome) in Python code?如何在 Python 代码中捕获 Wayland(Gnome)上的屏幕?
【发布时间】:2017-10-21 14:34:56
【问题描述】:

我正在尝试使用 Python 捕获我的屏幕,因为我将在 OpenCV 上使用它,但我找不到让它在 Gnome 上工作的方法,因为 Gnome 使用 Wayland 和我发现的所有库使用 X11。

目前我不考虑更改我的界面。我正在寻找解决这个问题的方法。 有人知道解决方案吗?

更具体地说,我将使用这些图像来训练 AI,因此我不断需要它们。

编辑: 我找到了this,但是如何在 Python 中将帧传递给 OpenCV 而不是保存视频文件?

【问题讨论】:

  • 截至 2017 年 5 月,默认情况下,任何主要 Linux 发行版都未使用 Wayland。我想 Debian 完全采用它还需要一两年的时间,而其他扭曲器则需要更长的时间。此外,我很确定 X11 后备将保留以保持兼容性。你真的尝试过使用 X11 库吗?
  • 他们不工作,抛出一些错误,或者给我一张黑色的图片。使用 pyscreenshot,它“工作”给我黑色图像。我已经在 grab() 函数上尝试使用不同的后端选项,PyQt、PyGTK 和 Imagemagick。
  • @Marat Fedora 默认使用 Wayland(如果驱动程序支持)。 Debian GNOME 团队至少计划在 Stretch 发布后切换到 Wayland。
  • @jku 我不会说 Fedora 是一个非常受欢迎的发行版,而且 Stretch 花费的时间比最初计划的要多。 Pedro,你碰巧在 Fedora 25 上测试过这个吗?
  • “Fedora 不是一个非常受欢迎的发行版” - 好吧 :)

标签: python opencv gnome screen-capture wayland


【解决方案1】:

现在进行截屏的正确方法是使用Screencast portal,它是 XDG 桌面门户的一部分,并且已被 GNOME、KDE、wlroots(以及更多)支持。作为一个额外的优势,这也适用于 Flatpaks 等容器化格式。

您可以找到一个示例,说明如何使用由 Mutter 维护者之一创建的 this snippet 在 Pyhon 中进行截屏。如果您查找parse_launch(),您将看到一个 GStreamer 管道,您可以对其进行修改以包含可以为您执行处理的 GStreamer OpenCV 元素。

注意:在您的编辑中,您链接到该门户的前身,它是 GNOME 特定的内部 API,所以我不会依赖它 ;-)

【讨论】:

    猜你喜欢
    • 2016-01-08
    • 1970-01-01
    • 1970-01-01
    • 2012-03-01
    • 2022-06-20
    • 2013-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多