Формат данных Turbojpeg's tjDecompressToYUV2

Я хотел бы преобразовать изображение JPEG в Y'UV420p с помощью Turbo JPEG. Я думаю, что здесь используются блоки 2x2, причем в Y 'содержится вдвое больше информации, чем в каждом из компонентов U и V, но я не смог найти пример, который это делает.

Как извлечь эти отдельные компоненты из tjDecompressToYUV2 и каков формат буфера, выделенного, скажем, для изображения, размеры которого кратны степени 2?

Скажем, у меня есть изображение шириной 1024 х 512 пикселей. Как мне извлечь каждое значение Y 'U и V из следующего кода:

constexpr auto height = 512u;
constexpr auto width = 1024u;  
unsigned char buffer[height * width * 3 / 2];
...
tjDecompressToYUV2(jpegDecompressor, jpegImage, jpegSize, buffer, width, 2, height, TJFLAG_FASTDCT);
...

то есть. Как компоненты извлекаются из буфера?

1 ответ

Решение

Попробуйте использовать функцию tjDecompressToYUV, которая дает вам 3 цветовых пространства в 3 разных выходных буферах. Буфер Y должен содержать один байт (восьмибитное значение) для компонента Y. Я никогда не использовал компоненты цветности, поэтому не могу сказать, как они хранятся.

Что вы пытаетесь сделать, поскольку может быть другой способ решить эту проблему?

Другие вопросы по тегам