如何将YUYV图像压缩为jpeg

(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

(对不起,你必须粘贴该链接,因为它会打破markdown.)

我的网络摄像头(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的功能?

最佳答案 自提出问题以来,已在TurboJPEG API中实现了
tjCompressFromYUV功能.它采用YCbCr或YUV格式的图像并将其转换为JPEG图像.

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

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

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

点赞