請問求物體中心誤差 |
答題得分者是:senso
|
eulor2000
一般會員 發表:51 回覆:34 積分:17 註冊:2008-11-18 發送簡訊給我 |
_fastcall TForm1::Button3Click(TObject *Sender) { Byte *ptr;//用來指像素行的指標 int x_center,y_center,count; int x_total,y_total; Graphics::TBitmap *Bmp1 = new Graphics::TBitmap(); //定義一個new TBitmap Bmp1->Assign(Form1->Image2->Picture->Bitmap); // 將Image2 的Bitmap轉存到TBitmap Bmp for(int j = 0; j < Bmp1->Height; j ) { ptr = (Byte *) Bmp1->ScanLine[j]; //該行像素位址給ptr for(int i = 0; i < Bmp1->Width; i ) { if((Byte)ptr[i*3]==0) //為何ptr[i*3]一定要這樣才可以找到圓心 ,但似乎誤差很明顯 { x_total=x_total i; //物體中心=(所有紅點X座標 / 所有紅點數, 所有紅點 Y 座標 / 所有紅點數) y_total=y_total j; count=count 1; } } } x_center=x_total/count; //算出物體中心座標 y_center=y_total/count; Image2->Canvas->Pen->Color=clRed; Image2->Canvas->Pen->Width=2; Image2->Canvas->MoveTo(x_center,y_center-50); Image2->Canvas->LineTo(x_center,y_center 50); Image2->Canvas->MoveTo(x_center-50,y_center); Image2->Canvas->LineTo(x_center 50,y_center); Label2->Caption=IntToStr(x_center) "," IntToStr(y_center); } |
senso
高階會員 發表:5 回覆:126 積分:226 註冊:2003-11-27 發送簡訊給我 |
請設初值
[code cpp] int x_center=0,y_center=0,count=0; int x_total=0,y_total=0; [/code] if((Byte)ptr[i*3]==0) //為何ptr[i*3] 因為你的圖可能是24bit所以是3Byte,可以設中斷點看一下 [code cpp] Bmp1->Assign(Form1->Image2->Picture->Bitmap); Bmp1->PixelFormat; //Bmp1->PixelFormat=pf24bit //6=pf24bit [/code] |
eulor2000
一般會員 發表:51 回覆:34 積分:17 註冊:2008-11-18 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |