How can I create a YUV422 frame from a JPEG or other image on Ubuntu

PhilBot picture PhilBot · Jan 20, 2013 · Viewed 10.6k times · Source

I want to create a sample YUV422 Frame on Ubuntu from any image so I can code a YUV422 to RGB888 function for the sake of learning. I'd really like to be able to use a trusted tool to create a sample and convert back to a jpeg.

I've tried ImageMagick but am clearly doing something wrong:

convert -size 640x480 -depth 24 test.jpg -colorspace YUV -size 640x480 -depth 16 -sampling-factor 4:2:2 tmp422.yuv

enter image description here

convert -colorspace YUV -size 640x480 -depth 16 -sampling-factor 4:2:2 tmp422.yuv -size 640x480 -depth 24 -colorspace RGB test2.jpg

enter image description here

I've also install the mpegtools package on Ubuntu, in order to use jpeg2yuv:

>> jpeg2yuv -f 1 test.jpg
   INFO: [jpeg2yuv] Reading jpeg filenames from stdin.
   INFO: [jpeg2yuv] Parsing & checking input files.

**ERROR: [jpeg2yuv] System error while opening: "": No such file or directory

Clearly, something else is wrong. Could someone please shed some light on how I might accomplish this? Thanks -

Answer

mmgp picture mmgp · Jan 20, 2013

Do it with ffmpeg:

ffmpeg -i a.jpg -s 640x480 -pix_fmt yuv422p a.yuv
ffmpeg -pix_fmt yuv422p -s 640x480 -i a.yuv b.jpg