преобразуйте изображение в формат YUV (разные типы: BT.601 или BT.709) и сохраните его в формате raw

#encode #codec #yuv

#кодируйте #кодек #yuv

Вопрос:

Существует ли инструмент, который может преобразовать данное изображение (jpg) в формат YUV и сохранить его как необработанные данные?

Я попробовал Python PIL, но не смог найти, как это сделать.

Спасибо за любую идею.

Ответ №1:

Вы можете сделать это с помощью ImageMagick, который установлен в большинстве дистрибутивов Linux и доступен для macOS и Windows. Просто в терминале вы можете запустить:

 convert input.jpg -depth 8 -colorspace Rec601YCbCr yuv:result.bin
  

или, для Rec709YCbCr , вы можете использовать:

 convert input.jpg -depth 8 -colorspace Rec709YCbCr yuv:result.bin
  

Вот небольшой пример процесса и его изменения:

 # Create a gradient image, magenta-green, save as JPEG
convert -size 1024x768 gradient:magenta-lime input.jpg

# Convert to YUV, saving as raw YUV in "image.bin"
convert input.jpg -depth 8 -colorspace Rec601YCbCr yuv:image.bin

# Convert back from raw YUV back to JPEG to check
convert -size 1024x768 -depth 8 YUV:image.bin -set colorspace Rec601YCbCr -colorspace RGB result.jpg
  

Комментарии:

1. С удовольствием! Удачи с вашим проектом.

Ответ №2:

конвертируйте из jpg в yuv с помощью ffmpeg

 ffmpeg -i filename.jpg -pixel_format yuv420p -s 656x500 filename.yuv
  

-pixel_format может быть yuv420p или yuv422p или yuv444p

-s является ли разрешение jpg


для просмотра

 ffplay -f rawvideo -pixel_format yuv420p -video_size 656x500 -i filename.yuv
  

если размер видео не точный, вы увидите мусор.