(고정 크기, 알파 채널 없음, < 60fps)의 원시 RGB 이미지 스트림을 GTK 창에 표시하고 싶습니다. 여기에서 카이로를 사용하려면 was told입니다.C, cairo : RGB 이미지의 렌더링 스트림
내 코드는 단일 이미지에서 잘 작동하며 약 1FPS의 이미지 스트림에도 사용할 수 있습니다. 2FPS 이상에서는 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