Я разрабатываю приложение, которое будет получать изображения с камеры и отображать их в окне 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 и обрабатывать эти изображения как видеопоток, но я не уверен, похоже ли это на излишество для моего простого механизма.
Заранее благодарю за любой совет!