我想在GTK窗口中显示原始RGB图像(固定大小,不带alpha通道,< 60fps)的流。我在这里使用cairo was told。C,cairo:呈现RGB图像流
我的代码可以很好地处理单个图像,并且仍然可以以大约1 FPS的速度处理图像流。 高于2 FPS我的应用程序崩溃与Xorg错误,所以我认为我的开罗机制是错误的。
它看起来有点像这样:
unsigned char *image_data;
cairo_surface_t *image;
GtkWidget *main_window;
void init_window()
{
// (...) all the GTK initialization stuff
image_data = malloc(IMAGE_BYTES);
image = cairo_image_surface_create_for_data(image_data,
CAIRO_FORMAT_RGB24,
IMAGE_W, IMAGE_H,
cairo_format_stride_for_width(CAIRO_FORMAT_RGB24, IMAGE_W));
}
void update_image()
{
cairo_t *cr;
cr = gdk_cairo_create(main_window->window);
cairo_set_source_surface(cr, image, 10, 10);
cairo_paint(cr);
cairo_destroy(cr);
}
int main()
{
// (...)
init_window();
while ((image_data = receive_image()) != NULL)
update_image();
}
什么是呈现一系列图像,在开罗的正确方法? 哪些结构应该重新使用,哪些结构需要重新创建?
提示:这是为UVC摄像头完成的:https://github.com/ufo-kit/libuca,以防万一您正在处理相机。 – drahnr 2014-03-21 09:56:46