Медленная подача веб-камеры GTK - PullRequest
1 голос
/ 31 марта 2019

так что у меня есть веб-камера, которая создает pixbuf из обалденного изображения захвата OpenCV, но, к сожалению, захват слишком медленный, по сути мой код выглядит следующим образом.

builder.get_object('VideoCanvas').connect('draw', VideoCanvasDrawCb)

...

def VideoCanvasDrawCb(videoCanvas, context):
    success, frame = capture.read()
    frame = cv2.resize(frame, (480, 360))
    # Slowing down video recording
    for i in range(0, 3): output.writeFrame(frame)
    height, width, depth = frame.shape
    pixelBuffer = GdkPixbuf.Pixbuf.new_from_data(frame.tostring(),
    GdkPixbuf.Colorspace.RGB, False, 8, width, height, width * 3, None, None)
    builder.get_object('VideoCanvas').set_from_pixbuf(pixelBuffer)

Код работает нормально, пока я не дохожу до последней функции set_from_pixbuf, в то время как графический интерфейс замедляет тонну ... Я попытался заменить GtkImage на GtkDrawingArea и нарисовать pixbuf с помощью cairo. Но производительность такая же ...

Есть ли другой способ рендерить pixbuf в реальном времени, не полностью замедляя все приложение?

...