так что у меня есть веб-камера, которая создает 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 в реальном времени, не полностью замедляя все приложение?