【问题标题】:How to compress a YUYV image into a jpeg如何将 YUYV 图像压缩成 jpeg
【发布时间】:2013-10-09 20:49:18
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    自提出问题以来,TurboJPEG API 中已实现tjCompressFromYUV 函数。它获取YCbCr 或YUV 格式的图像并将其转换为JPEG 图像。

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

    也有可能将YUYV 图像用作YUV 图像和4:2:2 的子采样,因为这将导致每个@987654334 有两个Y 组件@ 组件,但如果 this source 是准确的,则有四种不同的可能方式来放置 YUVY 组件。但要积极的是,这有 1/4 的机会起作用。

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

    【讨论】:

      猜你喜欢
      • 2013-04-29
      • 2013-02-22
      • 2010-12-18
      • 2014-05-22
      • 1970-01-01
      • 2020-09-11
      • 1970-01-01
      • 2019-09-22
      • 2012-05-16
      相关资源
      最近更新 更多