2013-02-13 122 views
0

我想閱讀和使用opencv顯示視頻。我用Direct-show錄製,視頻有UYVY(4:2:2)編解碼器,因爲opencv無法讀取該格式,我想將編解碼器轉換爲RGB顏色模型,我參考了ffmpeg並且我想要知道是否有可能用它完成這項工作?如果不是,如果你有一個建議,我會很感激。轉換UYVY FFmpeg

+0

'UYVY'是[popular]像素格式之一。你絕對可以使用DirectShow API從這個文件中讀取所有的標準方法。 Windows中內置了轉換爲RGB。很難說出爲什麼你不能使用你創建的文件。 – 2013-02-13 19:28:01

+0

我知道閱讀,但我不知道如何轉換它' – Engine 2013-02-13 19:32:49

+0

我從來沒有聽說過** RBB **,它是什麼? – karlphillip 2013-02-13 20:52:46

回答

1

作爲I explained to you before,OpenCV可以讀取某些格式的YUV,包括UYVY(感謝FFmpeg/GStreamer)。所以我相信你從相機中獲得的cv::Mat已經轉換爲BGR色彩空間,這是OpenCV默認使用的。

我修改previous program來存儲視頻爲PNG的第一幀:

cv::Mat frame; 
if (!cap.read(frame)) 
{ 
    return -1; 
}    

cv::imwrite("mat.png", frame); 

for(;;) 
{ 
// ... 

而且形象是完美的。在mat.png執行命令file顯示:

mat.png: PNG image data, 1920 x 1080, 8-bit/color RGB, non-interlaced 

一個更精確的測試將是轉儲整個frame.data()到磁盤,並以一個圖像編輯器中打開它。如果你這樣做,請記住R和B通道將被切換。