4

(交叉发布到 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的功能?

4

1 回答 1

2

自从提出问题以来tjCompressFromYUV,TurboJPEG API 中已经实现了一个功能。它获取YCbCrorYUV格式的图像并将其转换为 JPEG 图像。

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

也可能有一点机会将YUYV图像用作YUV具有二次采样的4:2:2图像,因为这将导致Y每个UV组件有两个组件,但如果此来源是准确的,则有四种不同的可能方式来放置YUVY组件。但要积极的是,这有 1/4 的机会起作用。

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

于 2014-04-28T07:14:36.317 回答