Недоразумение V4L2

У меня небольшая проблема с размером моих буферов в программе на C ++.
Я получаю изображения YUYV с камеры, используя V4L2 (пример доступен Вот )

Я хочу взять одно изображение и поместить его в свою собственную структуру изображения.
Вот буфер, заданный структурой V4L2 и его размер

(uchar*)buffers_[buf.index].start, buf.bytesused

В моей структуре я создаю новый буфер (mybuffer) с размером width * height * bitSize (размер байта равен 4, поскольку я получаю изображения YUYV или YUV422).

Проблема в том, что я ожидал буфер ЬиЕ быть такого же размера, как тот, который я создал. Но это не тот случай, например, когда я беру 640 * 480 изображение buf = 614400 и mybuffer = 1228800 (в два раза больше).

У кого-нибудь есть идеи, почему это так?

2

Решение

YUV422 использования 4 байта в 2 пикселя

В YUV422 мод U анс V значения делятся между двумя пикселями. Байты в изображении упорядочены как U0 Y0 V0 Y1 U2 Y2 V2 Y3 и т.п.

Предоставление пикселей как:

pixel 0   U0Y0V0
pixel 1   U0Y1V0
pixel 2   U2Y2V2
pixel 3   U2Y3V2
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]