小弟有一份程式想轉為scanline做法,請教高手 |
尚未結案
|
fxk555
一般會員 發表:1 回覆:0 積分:0 註冊:2004-12-05 發送簡訊給我 |
小弟有一部分程式如下:
/*unsigned char r, g, b, ht, wh, R1, G2, B3; Screen->Cursor = crHourGlass;
wh = Image2->Width;
ht = Image2->Height;
for (int Y=0;Y<520;Y )
{ for (int X=0;X<520;X )
{ R1=filter[0]*GetRValue(Image2->Picture->Bitmap->Canvas->Pixels[X-1][Y-1])
filter[1]*GetRValue(Image2->Picture->Bitmap->Canvas->Pixels[X][Y-1])
filter[2]*GetRValue(Image2->Picture->Bitmap->Canvas->Pixels[X 1][Y-1])
filter[3]*GetRValue(Image2->Picture->Bitmap->Canvas->Pixels[X-1][Y])
filter[4]*GetRValue(Image2->Picture->Bitmap->Canvas->Pixels[X][Y])
filter[5]*GetRValue(Image2->Picture->Bitmap->Canvas->Pixels[X 1][Y])
filter[6]*GetRValue(Image2->Picture->Bitmap->Canvas->Pixels[X-1][Y 1])
filter[7]*GetRValue(Image2->Picture->Bitmap->Canvas->Pixels[X][Y 1])
filter[8]*GetRValue(Image2->Picture->Bitmap->Canvas->Pixels[X 1][Y 1]);
if (R1>255)
R1=255;
if (R1<0)
R1=0;
G2=filter[0]*GetGValue(Image2->Picture->Bitmap->Canvas->Pixels[X-1][Y-1])
filter[1]*GetGValue(Image2->Picture->Bitmap->Canvas->Pixels[X][Y-1])
filter[2]*GetGValue(Image2->Picture->Bitmap->Canvas->Pixels[X 1][Y-1])
filter[3]*GetGValue(Image2->Picture->Bitmap->Canvas->Pixels[X-1][Y])
filter[4]*GetGValue(Image2->Picture->Bitmap->Canvas->Pixels[X][Y])
filter[5]*GetGValue(Image2->Picture->Bitmap->Canvas->Pixels[X 1][Y])
filter[6]*GetGValue(Image2->Picture->Bitmap->Canvas->Pixels[X-1][Y 1])
filter[7]*GetGValue(Image2->Picture->Bitmap->Canvas->Pixels[X][Y 1])
filter[8]*GetGValue(Image2->Picture->Bitmap->Canvas->Pixels[X 1][Y 1]);
if (G2>255)
G2=255;
if (G2<0)
G2=0;
B3=filter[0]*GetBValue(Image2->Picture->Bitmap->Canvas->Pixels[X-1][Y-1])
filter[1]*GetBValue(Image2->Picture->Bitmap->Canvas->Pixels[X][Y-1])
filter[2]*GetBValue(Image2->Picture->Bitmap->Canvas->Pixels[X 1][Y-1])
filter[3]*GetBValue(Image2->Picture->Bitmap->Canvas->Pixels[X-1][Y])
filter[4]*GetBValue(Image2->Picture->Bitmap->Canvas->Pixels[X][Y])
filter[5]*GetBValue(Image2->Picture->Bitmap->Canvas->Pixels[X 1][Y])
filter[6]*GetBValue(Image2->Picture->Bitmap->Canvas->Pixels[X-1][Y 1])
filter[7]*GetBValue(Image2->Picture->Bitmap->Canvas->Pixels[X][Y 1])
filter[8]*GetBValue(Image2->Picture->Bitmap->Canvas->Pixels[X 1][Y 1]);
if (B3>255)
B3=255;
if (B3<0)
B3=0;
Image1->Picture->Bitmap->Canvas->Pixels[X][Y]=RGB(R1,G2,B3);
} }
請教高手,如何轉為scanline寫法呢?或小弟是做能夠控制濾波器大小,與數值的影像低通濾波器,是否有完整範例能供參考?眼見專題發表日期將近,懇請各位高手幫忙,感激不盡! 發表人 -
|
1666362
初階會員 發表:66 回覆:124 積分:43 註冊:2004-07-07 發送簡訊給我 |
下面這段SOURCE CODE 您參考看看
先宣告全域變數 p1[520][520] void __fastcall TForm1::LPFClick(TObject *Sender) { Graphics::TBitmap *Bmp = new Graphics::TBitmap(); Byte *ptr; Bmp->Assign(Image1->Picture->Bitmap ); Bmp->PixelFormat=pf24bit; for (int i=0;i我是新手 多多指教 ^^ 發表人 - 1666362 於 2004/12/05 23:18:08 |
1666362
初階會員 發表:66 回覆:124 積分:43 註冊:2004-07-07 發送簡訊給我 |
|
JerryKuo
版主 發表:42 回覆:571 積分:322 註冊:2003-03-10 發送簡訊給我 |
引言: 小弟有一部分程式如下: /*unsigned char r, g, b, ht, wh, R1, G2, B3; Screen->Cursor = crHourGlass; wh = Image2->Width; ht = Image2->Height; for (int Y=0;Y<520;Y ) { for (int X=0;X<520;X ) { R1=filter[0]*GetRValue(Image2->Picture->Bitmap->Canvas->Pixels[X-1][Y-1]) filter[1]*GetRValue(Image2->Picture->Bitmap->Canvas->Pixels[X][Y-1]) filter[2]*GetRValue(Image2->Picture->Bitmap->Canvas->Pixels[X 1][Y-1]) filter[3]*GetRValue(Image2->Picture->Bitmap->Canvas->Pixels[X-1][Y]) filter[4]*GetRValue(Image2->Picture->Bitmap->Canvas->Pixels[X][Y]) filter[5]*GetRValue(Image2->Picture->Bitmap->Canvas->Pixels[X 1][Y]) filter[6]*GetRValue(Image2->Picture->Bitmap->Canvas->Pixels[X-1][Y 1]) filter[7]*GetRValue(Image2->Picture->Bitmap->Canvas->Pixels[X][Y 1]) filter[8]*GetRValue(Image2->Picture->Bitmap->Canvas->Pixels[X 1][Y 1]); 請教高手,如何轉為scanline寫法呢?或小弟是做能夠控制濾波器大小,與數值的影像低通濾波器,是否有完整範例能供參考?眼見專題發表日期將近,懇請各位高手幫忙,感激不盡! >>< face="Verdana, Arial, Helvetica"> fxk555你好: 請用下面的方式發表程式或修改, [code] // BCB, Delphi 的程式碼 [/code] |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |