Я разрабатываю приложение, которое должно получать изображения с камеры и отображать их в окне GTK.
Камера передает необработанные изображения RGB (3 байта на пиксель, без альфа-канала, фиксированный размер) с различной частотой кадров (1–50 кадров в секунду).
Я уже проделал всю эту аппаратную работу, и теперь у меня есть функция обратного вызова, которая вызывается при каждом новом изображении, снятом камерой.
Какой самый простой, но достаточно быстрый способ отобразить эти изображения в моем окне?
Вот что я уже пробовал:
с помощью gdk_draw_rgb_image ()
в области рисования gtk: в основном работает, но рендеринг был настолько медленным, что процессы рисования накладывались друг на друга, и приложение падало после первых нескольких кадров даже при скорости захвата 1 кадр / с.
выделение GdkPixbuf для каждого нового кадра и вызов gtk_image_set_from_pixbuf ()
в виджете изображения gtk: отображает только первый кадр, тогда я не вижу изменений в окне. Может быть ошибка в моем коде, но не знаю, будет ли это достаточно быстро.
с использованием Cairo ( cairo_set_source_surface ()
, затем cairo_paint ()
): показалось довольно быстрым, но изображение выглядело полосатым, не знаю, формат изображения совместим.
В настоящее время я думаю о том, чтобы попробовать что-то вроде gstreamer и обрабатывать эти изображения как видеопоток, но я не уверен, является ли это излишним для моего простого механизма.
Заранее благодарим за любой совет!