有人可以幫我看看程式碼怎麼改才能印出一張image嗎 |
答題得分者是:senso
|
crowneva
一般會員 發表:4 回覆:10 積分:2 註冊:2009-07-27 發送簡訊給我 |
[code delphi] AnsiString FileName; FILE *fp; SaveDialog1->Filter = "文字文件 (*.txt)|*.TXT"; SaveDialog1->DefaultExt="txt"; if(SaveDialog1->Execute()) { FileName = SaveDialog1->FileName; } fp = fopen(FileName.c_str(),"w"); int M[10],Hei,Wid,up,down,left,right,zz; Graphics::TBitmap *Bmp = new Graphics::TBitmap(); Byte *tptr; Byte *uptr; Byte *dptr; Bmp->Assign(Image1->Picture->Bitmap); for(Hei=1;Hei { up =Hei-1; down =Hei 1; if(up<0) up = Bmp->Height-1; if(down == Bmp->Height) down=0; tptr = (Byte*)Bmp->ScanLine[Hei]; uptr= (Byte*)Bmp->ScanLine[up]; dptr= (Byte*)Bmp->ScanLine[down]; for(Wid=1;Wid { left = Wid-1; right= Wid 1; if(left<0) left = Bmp->Width-1; if(right==Bmp->Width) right=0; M[1]=(int)uptr[left]; M[2]=(int)uptr[Wid]; M[3]=(int)uptr[right]; M[4]=(int)tptr[left]; M[9]=(int)tptr[Wid]; M[5]=(int)tptr[right]; M[6]=(int)dptr[left]; M[7]=(int)dptr[Wid]; M[8]=(int)dptr[right]; if(M[9]>200) { q=0; for(int i=0; i<9; i ) { z[q][i] = M[i]/255.0; } //init v & w counter=0; for(j=0; j counter ; } } counter=0 ; for(k=0; k for(j=0; j counter ; } } //star for(int q=1 ; q<2 ; q ) { r[q][m]=1; //r's m 1=1 // zv->u->r for(j=0 ; j u[q][j]=0; for(i=0 ; i u[q][j]= u[q][j] v[j][i]*z[q][i]; } r[q][j] =(1-exp(-u[q][j]))/(1 exp(-u[q][j])); //bipolar } // rw->s->y for(k=0 ; k { s[q][k]=0; for(j=0 ; j s[q][k] = s[q][k] w[k][j]*r[q][j]; } y[q][k]= s[q][k]; tptr[Wid]=y[q][k]*255.0; zz=tptr[Wid]; } } } else { zz=tptr[Wid]; } fprintf(fp, "%d ", zz); } fprintf(fp, "\n"); } fclose(fp); [/code] 有前輩說用 [code delphi] Form1->Canvas->Pixels[10,10]=clRed; [/code] 不過我還是試不出來 所以想說po上我原本的程式碼 希望有人能幫看看哪裡該改 我讀image1是破壞過的圖 經過類神經做修補 希望補出來的可以秀在image2上 我現在是將補出來的建在txt檔上 請大家幫個忙 謝謝
------
eva |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
crowneva
一般會員 發表:4 回覆:10 積分:2 註冊:2009-07-27 發送簡訊給我 |
|
senso
高階會員 發表:5 回覆:126 積分:226 註冊:2003-11-27 發送簡訊給我 |
|
crowneva
一般會員 發表:4 回覆:10 積分:2 註冊:2009-07-27 發送簡訊給我 |
你有興趣要run全部嗎?
我現在圖片有弄出來了~ 不過我只出現前1/3= = 下面寫法這樣 [code delphi] Graphics::TBitmap *Bmp = new Graphics::TBitmap(); Byte *ptr; Bmp->Assign(Image2->Picture->Bitmap); for(int i=0;i { ptr=(Byte*)Bmp->ScanLine[i]; for(int j=0;j { ptr[j]=zz; } } Image2->Picture->Assign(Bmp); [/code]
------
eva |
senso
高階會員 發表:5 回覆:126 積分:226 註冊:2003-11-27 發送簡訊給我 |
只有1/3...你的圖是Bmp->PixelFormat=pf24bit;t的吧
請寫成這樣 [code cpp] ptr[j*3]=zz; //B ptr[j*3 1]=zz; //G ptr[j*3 2]=zz; //R [/code] 不過你前面M[1]~M[8]那樣抓是你要的嗎? 好比說我覺得像這樣才對... [code cpp] Mb[2]=(int)uptr[Wid*3]; //B Mg[2]=(int)uptr[Wid*3 1]; //G Mr[2]=(int)uptr[Wid*3 2]; //R [/code]
編輯記錄
senso 重新編輯於 2009-10-26 09:45:07, 註解 無‧
|
crowneva
一般會員 發表:4 回覆:10 積分:2 註冊:2009-07-27 發送簡訊給我 |
|
senso
高階會員 發表:5 回覆:126 積分:226 註冊:2003-11-27 發送簡訊給我 |
pf8bit並不是灰階,是256色...
小畫家也是可以存256色點陣圖(pf8bit) pf24bit在scanline因為是3byte所以長度是width*3 但是你原本的程式是對pf8bit的,讀pf24bit當然只有1/3.... 在一開始載入的時候設定就可以了 [code cpp] Bmp->Assign(Image1->Picture->Bitmap); Bmp->PixelFormat=pf8bit; [/code] 也畫出來是一樣要看PixelFormat [code cpp] Byte *ptr; Graphics::TBitmap *Bmp = new Graphics::TBitmap(); Bmp->Assign(Image1->Picture->Bitmap); //Bmp->PixelFormat=pf8bit; for(int i=0;i { ptr=(Byte*)Bmp->ScanLine[i]; for(int j=0;j { if (Bmp->PixelFormat==pf8bit) { ptr[j]=ptr[j]; //如果本來就是灰階 } else if (Bmp->PixelFormat==pf24bit) { int b=ptr[j*3]; int g=ptr[j*3 1]; int r=ptr[j*3 2]; int grey=0.299*r 0.587*g 0.114*b; //計算灰階後的值 ptr[j*3] =grey; //B ptr[j*3 1]=grey; //G ptr[j*3 2]=grey; //R //或Bmp->Canvas->Pixels[j][i]=(TColor)RGB(grey,grey,grey); } } } Image2->Picture->Assign(Bmp); [/code] |
crowneva
一般會員 發表:4 回覆:10 積分:2 註冊:2009-07-27 發送簡訊給我 |
|
senso
高階會員 發表:5 回覆:126 積分:226 註冊:2003-11-27 發送簡訊給我 |
|
crowneva
一般會員 發表:4 回覆:10 積分:2 註冊:2009-07-27 發送簡訊給我 |
|
senso
高階會員 發表:5 回覆:126 積分:226 註冊:2003-11-27 發送簡訊給我 |
可能是有某個地方把直接把0~255值直接給到了pf8bit的bitmap了
要不要試試直接幫pf8bit的bitmap建一個灰階調色盤? 請參考http://delphi.ktop.com.tw/board.php?cid=168&fid=921&tid=37679 這樣存進去就不會是灰階的了 |
crowneva
一般會員 發表:4 回覆:10 積分:2 註冊:2009-07-27 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |