У меня небольшая проблема с размером моих буферов в программе на C ++.
Я получаю изображения YUYV с камеры, используя V4L2 (пример доступен Вот )
Я хочу взять одно изображение и поместить его в свою собственную структуру изображения.
Вот буфер, заданный структурой V4L2 и его размер
(uchar*)buffers_[buf.index].start, buf.bytesused
В моей структуре я создаю новый буфер (mybuffer) с размером width * height * bitSize (размер байта равен 4, поскольку я получаю изображения YUYV или YUV422).
Проблема в том, что я ожидал буфер ЬиЕ быть такого же размера, как тот, который я создал. Но это не тот случай, например, когда я беру 640 * 480 изображение buf = 614400 и mybuffer = 1228800 (в два раза больше).
У кого-нибудь есть идеи, почему это так?
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
Других решений пока нет …