如何将YUYV图像压缩为jpeg

时间:2013-10-09 20:49:18

标签: c jpeg color-space libjpeg-turbo turbojpeg

(Cross发布到libjpeg-turbo-users列表。)

我遇到了libjpeg-turbo的问题。

tjCompress2函数需要压缩RGB或灰度图像。

http://libjpeg-turbo.sourceforge.net/ljtdoc.branches_1.3.x/turbojpeg-c/group___turbo_j_p_e_g.html#gaba62b7a98f960839b588579898495cf2

(抱歉,您必须粘贴该链接,因为它会打破降价。)

我的网络摄像头(PS3 EyeToy)具有以下特点:

chris@raspberrypi ~ $ v4l2-ctl --get-fmt-video
Format Video Capture:
    Width/Height  : 320/240
    Pixel Format  : 'YUYV'
    Field         : None
    Bytes per Line: 640
    Size Image    : 153600
    Colorspace    : SRGB

http://en.wikipedia.org/wiki/JPEG#Color_space_transformation看起来YUYV相当于JPEG所需的YCbCr(尽管它有一半的Cb和Cr数据,与亮度相比)。我理解正确吗?

我知道如何使用矩阵将YUYV转换为RGB,但似乎浪费了稀缺的CPU周期和颜色精度,在不需要时执行两个颜色空间更改。

是否有可以直接将YUYV图像压缩为JPEG的功能?

1 个答案:

答案 0 :(得分:2)

自提出问题以来,已在TurboJPEG API中实施tjCompressFromYUV功能。它采用YCbCrYUV格式的图片并将其转换为JPEG图片。

但是,要使用TurboJPEG API压缩YUYV图像,您仍然需要将YUYV转换为Y-Cb-Cr像素格式。

可能还有一点机会将YUYV图片用作YUV图像,其中子采样为4:2:2 ,因为这会导致两个{每Y个组件{1}}个组件,但如果this source是准确的,则有四种不同的方式来放置UV组件。但要积极起见,这个工作有可能达到1/4。

否则,在将图像转换为JPEG之前,您也可以使用PNGU或类似的方法对图像进行变换,因为此库能够以png RGB8格式保存YCbYCr图像。"