線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2552
推到 Plurk!
推到 Facebook!

影像轉二維陣列的問題(已爬文)

尚未結案
anatom
一般會員


發表:1
回覆:1
積分:0
註冊:2006-08-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-08-21 14:19:46 IP:218.168.xxx.xxx 未訂閱

我的目的是把影像轉成像matlab那樣的矩陣再進行正規化
就是把影像大小640*480pi轉成RGB三個640*480的陣列
正規化之後再顯示出來
有找過之前的資料,以下是我採用的方式以及執行遇到的問題

void __fastcall TForm1::Button3Click(TObject *Sender)
{
Graphics::TBitmap *Bmp = new Graphics::TBitmap;
Graphics::TBitmap *NorBmp= new Graphics::TBitmap;
Bmp=Image1->Picture->Bitmap;
Bmp->PixelFormat = pf24bit;
int i, j;
Byte *ptr;
Double R[640][480], G[640][480], B[640][480], Total[640][480];
for (int j=0; j<480; j )
{
ptr=(Byte *)Bmp->ScanLine[j];
for(int i=0; i<640; i )
{
B[i][j]=ptr[3*i];
G[i][j]=ptr[3*i 1];
R[i][j]=ptr[3*i 2];
Total[i][j] = R[i][j] G[i][j] B[i][j];
R[i][j] = R[i][j]/Total[i][j]*255;
G[i][j] = G[i][j]/Total[i][j]*255;
B[i][j] = B[i][j]/Total[i][j]*255;
NorBmp->Canvas->Pixels[j][i]=TColor(RGB(R[i][j],G[i][j],B[i][j]));
}
}
delete Bmp;
}

請各位大大幫我看一下哪裡出了問題...謝謝
另外紅色字體是做正規化的部份..
一併PO上來問問有沒有什麼問題..

anatom
一般會員


發表:1
回覆:1
積分:0
註冊:2006-08-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-08-21 14:35:28 IP:218.168.xxx.xxx 未訂閱

剛剛又測試一次
宣告 byte R[640][480], G[640][480], B[640][480], Total[640][480];
才是出現上一篇那個錯誤

如果是用float或double宣告的話會直接stack overflow
但正規化那部份除法結果是非整數
請問該怎麼解決??謝謝!!!

aftcast
站務副站長


發表:81
回覆:1485
積分:1763
註冊:2002-11-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2006-08-21 21:39:34 IP:61.229.xxx.xxx 未訂閱
------


蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
系統時間:2024-05-06 11:38:15
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!