智賢 發問時間: 電腦與網際網路程式設計 · 1 0 年前

將yuv格式以builder顯示出來?

找了好久的資料

可是都找不到要如何將yuv格式的影像轉為bmp

步驟是要將yuv轉成bmp檔,然後再去show出這個bmp檔嗎?

已更新項目:

謝謝你

我有找到YUV轉BMP的程式

我在builder裡的image class都是直接讀取bmp檔名

但是我覺得這樣就必須要先輸出成BMP檔

然後再去讀取這個BMP檔

這樣是否太慢?

有沒有辦法轉換完後直接去記憶体抓資料顯示出來?

1 個解答

評分
  • 1 0 年前
    最佳解答

    yuv格式有不少種ㄟ

    一般業界用比較多的

    是ITU565

    請用這個關鍵字搜尋 你可以找到相關資料

    包括資料格式等等

    不過YUV並不是ROW data形式的

    它是以yc yr yb yr..........排列的

    而色碼是YCRCB的

    關於YCRCB要轉換成RGB 你也很容易在網上找到

    步驟是

    你要先把yc yr yb yr..........轉成每個PIXEL都是YCRCB

    然後轉成RGB

    然後 你可以直接把RGB值填進Image

    或是轉換成Bitmap檔供Image呼叫

    你有不少要研究的東西喔

    加油

    2007-08-28 02:21:11 補充:

    不是很理解你的問題

    我猜想你的狀況

    如果你是利用一個裝置將YUV格式的影像資料讀進PC後 再利用轉換程式轉成BMP的話 其實是沒有差別的 因為Image元件讀取BMP也是形同在讀取一個矩陣 矩陣其實你可以視同為記憶體了

    差別只是 你不需要特別針對這個矩陣的需求去規劃

    2007-08-28 02:21:21 補充:

    YUV轉換成BMP是一個運算的過程 並非記憶體搬移的動作而已 所以直接讀去記憶體對你來說 是省不到時間的

    你也可以利用Image1->Canvas->Pixels[][]這樣的指令 直接讀取BMP影像矩陣 但是這其實跟LoadFromFile是一樣的啦 做的是一樣的事情

    另外針對BMP檔案 由於24BIT色下BMP其實就是RGB ROW Image的形式 我是認為沒有多少差別 BMP標頭檔只有54byte 差不多啦

    2007-08-28 02:24:26 補充:

    在PC下 因為PC的CACHE很大 應該足夠裝進你要處理的影像矩陣 所以不會有速度上的差別

    如果你是在一個其他的環境下 比方說X86或是ARM 你所適用的MPU或是SOC的CACHE很小 就就會造成很大的差異了

    所以 在這樣的環境下 在演算法 影像資料格式等等方面就要非常計較了

    這個是可以作為博士論文的 加油囉

還有問題?馬上發問,尋求解答。