Формат данных 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. Я никогда не использовал компоненты цветности, поэтому не могу сказать, как они хранятся.
Что вы пытаетесь сделать, поскольку может быть другой способ решить эту проблему?