有關ScanLine問題!請各位先進們協助!謝謝! |
尚未結案
|
auslk
初階會員 發表:35 回覆:77 積分:32 註冊:2003-02-17 發送簡訊給我 |
各位先進們: 小弟為影像初學者,想請教以下問題: 1.在此討論區中,小弟發現ScanLine
for迴圈 之下的寫法 有兩種版本
不知哪一個是對的?
2.可能小弟有寫錯 BCB執行後給我一個 Out of range!
請 先進們 給小弟指導!謝謝!
void __fastcall TForm1::Button1Click(TObject *Sender) { Graphics::TBitmap *Bmp=new Graphics::TBitmap(); Byte *ptr; int r,g,b; int gray; int i,j,threshold; Bmp->Assign(Image1->Picture->Bitmap); for(j=0;jPauli 發表人 - auslk 於 2003/10/01 21:15:28 發表人 - auslk 於 2003/10/01 23:19:03 |
dean
一般會員 發表:24 回覆:60 積分:21 註冊:2003-08-23 發送簡訊給我 |
HI您好:
我也是初學者!下面的程式您試試看!我是可以成功的!
for (int i = 0;i**我很想學,但又很不懂,所以一直問蠢問題,希望不要不屑我的問題,嘻嘻嘻** |
auslk
初階會員 發表:35 回覆:77 積分:32 註冊:2003-02-17 發送簡訊給我 |
請問 您是用 ? byte 一般彩色影像 ==>24bit
黑白 ==> 8bit
引言: HI您好: 我也是初學者!下面的程式您試試看!我是可以成功的!發表人 - auslk 於 2003/10/01 22:03:58for (int i = 0;i**我很想學,但又很不懂,所以一直問蠢問題,希望不要不屑我的問題,嘻嘻嘻** |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
auslk您好:
請確認您的Image1元件的寬與高和Graphics::TBitmap *Bmp
的寬與高是否相同
P.S:請參考下面聯結做適當的修改
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=37787
版規說明,麻煩請大家遵守【將會在每40個主題之後出現一次】 順心 <>~我也是在學習的階段,回答的不好請您多多見諒與指教~> 發表人 -
|
JerryKuo
版主 發表:42 回覆:571 積分:322 註冊:2003-03-10 發送簡訊給我 |
auslk你好: 1.)如果scanline是用於下列這種情形
Graphics::TBitmap *Bmp = new Graphics::TBitmap(); Bmp->LoadFromFile("rawdata.bmp");針對BMP讀出bmp檔,利用scanline將資料讀出,儲放至暫存空間(一維陣列或二 維陣列),此時如果filename.bmp的像素格式為24bits or 32bits,用scanline很 快的就能處理完成。但如果像素格式為16bits,15bits。RGB三個顏色就不是3 個byte,因此不能用你所說的方法讀取,會出現讀取錯誤。通常這時,我們可以先 經由GetRValue(),GetGValue(),GetBValue()獲取rgb,再依相對位置儲放至暫存 空間,如此在讀出資料時,才不會有讀錯資料問題,缺點是比用scanline慢了好幾 點。 2.)如果scanline是用於下列這種情形 Graphics::TBitmap *Bmp = new Graphics::TBitmap(); TMemoryStream *rawdata = new TMemoryStream(); rawdata->LoadFromFile("image.raw"); int DataSize = rawdata->Size; BYTE* pixel=new BYTE[DataSize]; rawdata->Read(pixel, DataSize); Bmp->PixelFormat = pf24bit; for loop *ptr=(Byte *)Bmp->ScanLine[j]; for loop *ptr = pixel[];針對影像資料已讀出為暫存陣列(例如:pixel[]),將資料儲存至bitmap物件,方 便秀圖,處理或是儲存成bmp檔,就可以使用你所參考的scanline方法,只要bitmap 物件pixelformat設定得當,秀圖及處理的速度飛快無比。 參考看看吧。 |
dean
一般會員 發表:24 回覆:60 積分:21 註冊:2003-08-23 發送簡訊給我 |
引言: auslk您好: 請確認您的Image1元件的寬與高和Graphics::TBitmap *Bmp 的寬與高是否相同 P.S:請參考下面聯結做適當的修改 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=37787 版規說明,麻煩請大家遵守【將會在每40個主題之後出現一次】 順心 <>~我也是在學習的階段,回答的不好請您多多見諒與指教~> 發表人 - >>< face="Verdana, Arial, Helvetica"> taishyang前輩指的應該就是這個,如果您有宣告TBitmap *Bmp,那應該就已Bmp來作處理的長寬吧!for(j=0;j我的那個是讀一般的彩色圖檔24bits,然後轉灰階ㄚ! **我很想學,但又很不懂,所以一直問蠢問題,希望不要不屑我的問題,嘻嘻嘻** |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |