為什麼我做完直方圖等化後,我的圖就不見了~~ |
尚未結案
|
Teresa_Chang
一般會員 發表:41 回覆:42 積分:16 註冊:2004-05-04 發送簡訊給我 |
以下是我的程式
//--------------------------------------------------------------------------- #include
|
richtop
資深會員 發表:122 回覆:646 積分:468 註冊:2003-06-10 發送簡訊給我 |
Teresa_Chang 您好: 不精確了解您要的結果,試著回答如下:
程式修改可顯示如下,很難用文字完全說明,您先參考一下。 至於畫成線狀的統計圖,只要修改一下我原先的程式,應該就可以了。
for (int x=1; x<256; x ) { canvas->MoveTo(x, (int)(256)); canvas->LineTo(x, (int)(256-rgb[p][x]*scale)); } void __fastcall TForm1::Button1Click(TObject *Sender) { JpgToBmp(Image1); toGray2D(Image1); //先轉成灰階,也可以不轉。 Byte *ptr; int avg,temp; //intt Histogram[256]={0}; float Histogram[256]={0}; // 避免整數相除產生捨去小數的狀況 Graphics::TBitmap *bmp; // = new Graphics::TBitmap(); //Image1->Picture->Bitmap->Assign(bmp); //Image1的Bitmap會被bmp取代,但bmp未指定內容,所以圖形就不見了。 bmp = Image1->Picture->Bitmap; bmp->PixelFormat = pf24bit; // new added int skip=1; if ( bmp->PixelFormat == pf24bit ) skip = 3; for (int row=0; row < bmp->Height; row ) { ptr = (Byte*) bmp->ScanLine[row]; for (int col=0; col < bmp->Width; col ) { avg = ptr[skip*col]; Histogram[avg]=Histogram[avg] 1; } } for(int i=100;i<120;i ) { Memo1->Lines->Add("low"); Memo1->Lines->Add(i); Memo1->Lines->Add(Histogram[i]); } int w = bmp->Width; // new int h = bmp->Height; // new for(int i=0;i<256;i ) Histogram[i]=(Histogram[i]/(w*h)); //整數型態會導致Histogram[.]通通變零。 for(int i=1;i<256;i ) Histogram[i]=Histogram[i] Histogram[i-1]; for(int i=0;i<256;i ) Histogram[i]=Histogram[i]*255; for (int row=0; row < bmp->Height; row ) { ptr = (Byte*) bmp->ScanLine[row]; for (int col=0; colRichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====##### |
Teresa_Chang
一般會員 發表:41 回覆:42 積分:16 註冊:2004-05-04 發送簡訊給我 |
|
richtop
資深會員 發表:122 回覆:646 積分:468 註冊:2003-06-10 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |