這幾天一個學生在調試視頻捕捉程序的時候遇到了一個問題。他使用capGetVideoFormat函數獲得視頻的格式時,發現m_bmpinfo.bmiHeader.biBitCount為16,他認為這是表示16位的RGB格式??墒遣还芩鞘褂肦GB565,還是RGB555格式進行轉換時,發現轉換后的YUV文件都是不對的。在我的Sony筆記本上運行他的程序,其中的m_bmpinfo.bmiHeader.biCompression的值為1498831189,這說明筆記本的攝像頭所采集的數據的格式并不是普通的16位RGB數據,而是UYVY格式的。UYVY格式是YUV格式的一個變種,在網上可以找到詳細的說明,在此就不贅述了。
要想知道biCompression到底有多少種取值,可以參考一下:http://files.codes-sources.com/fichier.aspx?id=45735&f=src/org/hypik/webcamlib/codecs/Codecs.java。在這里詳細的列出了各種視頻壓縮的編碼。
怎樣才能知道自己的攝像頭到底支持哪種格式的輸出呢?可以使用capDlgVideoFormat函數:
capDlgVideoFormat(m_wndVideo);
這個函數會激活攝像頭驅動的視頻格式設置對話框,如下圖所示。
我的這個攝像頭支持2種輸出格式,一種是UYVY,另一種是YUV2。 如果將m_bmpinfo.bmiHeader.biCompression設置為這兩種之外的值,再使用capSetVideoFormat改變輸出格式,由于驅動程序不支持而不會獲得成功。
posted on 2010-11-16 22:30
zealsoft 閱讀(1943)
評論(1) 編輯 收藏 引用 所屬分類:
視頻處理