如何在 Windows 的 Python Gtk3 中启用 GPU 渲染?

问题描述 投票:0回答:0

我注意到 Windows 中的 Gtk 似乎使用 CPU 而不是 GPU 渲染图像(而在 Linux 中似乎并非如此)。

我正在使用 Python、Gtk3 和 OpenCV 创建一个程序,该程序从摄像机流式传输视频并将其显示在 GtkImage 中。该程序可以运行,但是当我将图像调整为更大的分辨率时,帧率似乎下降了。我注意到 CPU 使用率越高,图像越大。

这里是一段代码:

import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk, GdkPixbuf, GLib

# This method is called in a thread that read() frames from cv2.VideoCapture and displays it into a GtkImage.
def writeDisplay(uiBuilder, frame):
    # Load frame from OpenCV into pixbuf
    frame = cv.cvtColor(frame, cv.COLOR_BGR2RGB)
    h, w, d = frame.shape
    pixbuf = GdkPixbuf.Pixbuf.new_from_data(
        frame.tostring(), GdkPixbuf.Colorspace.RGB, False, 8, w, h, w*d)

    # Load image into GtkImage
    imageDisplay = uiBuilder.get_object("display")
    GLib.idle_add(imageDisplay.set_from_pixbuf, pixbuf)
    pass

在 Linux 中,我没有注意到任何帧丢失,这表明 GtkImage 是由 GPU 渲染的。然而,在 Windows 中它似乎是软件渲染的。

我还应该注意,我在使用 Msys2 的 Windows 中使用PyGObject。

有没有办法使用硬件加速将视频帧从 OpenCV 流式传输到 Gtk3 GUI?

python opencv gtk gtk3 pygtk
© www.soinside.com 2019 - 2024. All rights reserved.