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