(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图像”.