2013-10-09 208 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圖像」。