全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:5082
推到 Plurk!
推到 Facebook!

關於讀取 yuv 檔(4:2:0)

尚未結案
xdio2
一般會員


發表:60
回覆:29
積分:17
註冊:2004-07-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-04-18 15:33:17 IP:140.124.xxx.xxx 訂閱
翻了前面幾篇文章 , 不過小弟我覺得我是連基礎的概念都不太懂
因為我連如何讀入叫做 .yuv的檔都不會

我是用一個叫做 YUVTools_2.1.9_trial.exe 的程式讀入這影像檔 (副檔名是yuv)
然後擷取出影像中的一張畫面(副檔名也是yuv , 已知為 4: 2 :0)

我的目的只是想單純用bcb載入 , 然後顯示出來在畫面上
請問我應該是用 dialog 裡面的 openpicture這的元件嗎?
還是說有別的方法呢?

請大家幫我解答了 , 感謝感謝
silverfoxkkk
一般會員


發表:6
回覆:12
積分:8
註冊:2004-11-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-04-20 09:43:07 IP:140.117.xxx.xxx 訂閱
您好:

openpicturedialog 這個元件,主要功能是選擇所要開啟的檔案名稱,

至於讀入檔案,解讀資料流,進而變成圖檔顯示在畫面上,則都得另外作處理。
ALTIS
初階會員


發表:4
回覆:26
積分:31
註冊:2005-04-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-04-20 10:15:28 IP:210.201.xxx.xxx 訂閱
我之前做過YUV的顯示  不知合不合用  
我的YUV檔案是分成3個檔案的
由於YUV的格式為 4:2:2 所以讀取各檔案的次數會不相同
field 也要注意 , 我的程式 field1 & field2

<textarea class="cpp" rows="10" cols="60" name="code"> FILE *Y_file , *Cb_file , *Cr_file ; Y_file = fopen(edt_Y->Text.c_str(),"r b"); Cb_file = fopen(edt_U->Text.c_str(),"r b"); Cr_file = fopen(edt_V->Text.c_str(),"r b"); //-----高度與寬度我是自定值 int W=StrToInt(Edit1->Text),H=StrToInt(Edit2->Text); int max=0,min=10000; int start=0,r,g,b; unsigned char cy,cb,cr; Graphics::TBitmap *Bmp = new Graphics::TBitmap; Bmp->Width = W; Bmp->Height = H; Bmp->PixelFormat = pf24bit; Byte *ptr,*ptr1,*ptr2,*ptr_a,*ptr_b; //-----先讀入Y(灰階) for(int y=0 ; yScanLine[y]; for(int x=0 ;xScanLine[y]; ptr_A = (Byte *)Bmp->ScanLine[y 241]; if(y%2 == 0) fread(read_r,1,728, Cr_file); for(int x=0 ; x<720 ; x ){ cy = ptr[x*3]; if(x<16) cb = read_r[x/2]; else cb = read_r[x/2-8]; cr = read_r[x/2 360]; if(cy<0)cy=0; if(cy>255)cy=255; if(cb<0)cb=0; if(cb>255)cb=255; if(cr<0)cr=0; if(cr>255)cr=255; r = 1.164*(cy-16) 1.596*(cr-128); g = 1.164*(cy-16)-0.392*(cr-128) - 0.813*(cb-128); b = 1.164*(cy-16) 2.017*(cb-128); if(r>255)r=255; else if(r<0)r=1; if(g>255)g=255; else if(g<0)g=1; if(b>255)b=255; else if(b<0)b=1; if(RadioButton1->Checked){ b = cy; g = cy; r = cy; } if(RadioButton2->Checked){ b = cb; g = cb; r = cb; } if(RadioButton3->Checked){ b = cr; g = cr; r = cr; } ptr[x*3] = b; ptr[x*3 1] = g; ptr[x*3 2] = r; //------field 2 cy = ptr_A[x*3]; if(x<16) cb = read_r[x/2]; else cb = read_r[x/2-8]; cr = read_r[x/2 360]; if(cy<0)cy=0; if(cy>255)cy=255; if(cb<0)cb=0; if(cb>255)cb=255; if(cr<0)cr=0; if(cr>255)cr=255; r = 1.164*(cy-16) 1.596*(cr-128); g = 1.164*(cy-16)-0.392*(cr-128) - 0.813*(cb-128); b = 1.164*(cy-16) 2.017*(cb-128); if(r>255)r=255; else if(r<0)r=1; if(g>255)g=255; else if(g<0)g=1; if(b>255)b=255; else if(b<0)b=1; if(RadioButton1->Checked){ b = cy; g = cy; r = cy; } if(RadioButton2->Checked){ b = cb; g = cb; r = cb; } if(RadioButton3->Checked){ b = cr; g = cr; r = cr; } ptr_A[x*3] = b; ptr_A[x*3 1] = g; ptr_A[x*3 2] = r; } } /* close the file */ fclose(Y_file); fclose(Cr_file); fclose(Cb_file); Graphics::TBitmap *Bmp1 = new Graphics::TBitmap; Bmp1->Width = W; Bmp1->Height = H; Bmp1->PixelFormat = pf24bit; int my = 0; for(int y=0 ; yScanLine[y]; ptr2 = (Byte *)Bmp->ScanLine[y 242]; ptr_a = (Byte *)Bmp1->ScanLine[my ]; ptr_b = (Byte *)Bmp1->ScanLine[my ]; for(int x=0 ;xSaveToFile("D:1.bmp"); Image1->Picture->LoadFromFile("D:1.bmp"); delete Bmp ; </textarea>
------
城市讓人迷惘 我在湖岸看見希望
妳的眼神是一道光芒 開啟我心中的收藏
編輯記錄
taishyang 重新編輯於 2007-04-20 10:48:52, 註解 無‧
系統時間:2024-05-03 9:20:41
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!