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

影像的問題?

缺席
encoref70036
一般會員


發表:29
回覆:47
積分:15
註冊:2011-05-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2011-08-14 11:07:47 IP:111.253.xxx.xxx 訂閱
請問一段程式碼
TMDIChild *Child;
Child = (TMDIChild *)ActiveMDIChild;
float Y_value,U_value,V_value;
Byte *Yptr,*Uptr,*Vptr;
int w=Child->Image1->Picture->Bitmap->Width;
int h=Child->Image1->Picture->Bitmap->Height;
Child->Image1->Picture->Bitmap->PixelFormat=pf24bit;
Graphics::TBitmap *Ybmp = new Graphics::TBitmap();
Ybmp->Width=w;
Ybmp->Height=h;
Ybmp->PixelFormat=pf24bit;
Graphics::TBitmap *Ubmp = new Graphics::TBitmap();
Ubmp->Width=w;
Ubmp->Height=h;
Ubmp->PixelFormat=pf24bit;
Graphics::TBitmap *Vbmp = new Graphics::TBitmap();
Vbmp->Width=w;
Vbmp->Height=h;
Vbmp->PixelFormat=pf24bit;
Ybmp->Assign(Child->Image1->Picture->Bitmap);
Ubmp->Assign(Child->Image1->Picture->Bitmap);
Vbmp->Assign(Child->Image1->Picture->Bitmap);
for (int y=0; y {
Yptr =(Byte*)Ybmp->ScanLine[y];
Uptr =(Byte*)Ubmp->ScanLine[y];
Vptr =(Byte*)Vbmp->ScanLine[y];
for (int x=0; x {
Y_value = 0.114*Yptr[x*3] 0.587*Yptr[x*3 1] 0.299*Yptr[x*3 2];
Y_value = 0.5;
Yptr[x*3]=Yptr[x*3 1]=Yptr[x*3 2] = Y_value;
U_value = 0.5*Uptr[x*3]-0.33126*Uptr[x*3 1]-0.16874*Uptr[x*3 2];//Cb
if (U_value > 0.0) U_value = 0.5;
else if (U_value <0.0) U_value -=0.5;
U_value =128.5;
if (U_value > 255.0) U_value=255.;
if (U_value < 0.0) U_value=0;
Uptr[x*3]=Uptr[x*3 1]=Uptr[x*3 2] = U_value;
V_value = -0.08131*Vptr[x*3]-0.41869*Vptr[x*3 1] 0.5*Vptr[x*3 2];//Cr
//if (V_value > 0.0) V_value = 0.5;
//else if (V_value <0.0) V_value -=0.5;
V_value =128.5;
if (V_value > 255.0) V_value=255.;
if (V_value < 0.0) V_value=0;
Vptr[x*3]=Vptr[x*3 1]=Vptr[x*3 2] = V_value;
}
}
Child->Image1->Canvas->Draw(0,0,Ubmp);
如果不加粗體字那句 影像是全黑的
加了以後 影像就正常了
請問粗體字那句是做什麼用的呢?
還有請問一下 這段是不是可以不用加
if (U_value > 255.0) U_value=255.;
if (U_value < 0.0) U_value=0;
因為 Uptr[x*3]是24位元 所以顏色有2的24次方 所以如果要加 是上限定2的24次方嗎?
感恩~
編輯記錄
encoref70036 重新編輯於 2011-08-13 21:18:14, 註解 無‧
encoref70036
一般會員


發表:29
回覆:47
積分:15
註冊:2011-05-18

發送簡訊給我
#2 引用回覆 回覆 發表時間:2011-09-06 16:48:55 IP:114.26.xxx.xxx 訂閱
我找到資料 維基上也有 +128.5那個好像是公式 讓算出來的值都在0~255的樣子 資料如下
http://www.wretch.cc/blog/killman/7147165
系統時間:2024-03-29 1:30:01
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!