2013-10-09 126 views
4

(交叉张贴到的libjpeg涡轮增压用户列表。)如何将YUYV图像压缩成JPEG

我遇到的libjpeg涡轮增压的一个问题。

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

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

(对不起,你必须粘贴链接,因为它打破了降价。)

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

[email protected] ~ $ 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(尽管它与CBC和Cr数据相比,与亮度相比)。我理解正确吗?

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

有没有可以将YUYV图像直接压缩成JPEG格式的函数?

回答

2

自问题提出的时间以来,TurboJPEG API中已实现了一个tjCompressFromYUV函数。它以YCbCrYUV格式拍摄图像并将其转换为JPEG图像。

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

还有可能是给一个二次取样4:2:2使用YUYV图像作为YUV图像的机会不大,因为这将导致每个UV部件2种Y成分,但如果this source是准确的,有四种不同的可能放置YUVY组件的方法。但要积极,这个工作有1/4的机会。

否则,您可能还会在将图像转换为JPEG之前使用PNGU或类似的方法转换图像,因为此库能够“以png RGB8格式保存YCbYCr图像”。