看到一個類型,跟我的需求很像,如下:
用土法煉鋼的方式 把圖讀近來
我是把二值化的圖 標成黑色 所以黑色點是有效點
下面是我用的方式 您參考看看
XX,YY 就是妳要的質心
sum就是你要的面積
void __fastcall TForm1::Button13Click(TObject *Sender)
{
Graphics::TBitmap *Bmp = new Graphics::TBitmap();
Byte *ptr;
int r,g,b;
int i,j,XX,YY;
int sum=0,X=0,Y=0;
Bmp->Assign(Image1->Picture->Bitmap);
Bmp->PixelFormat=pf24bit;
for (int i=0;iHeight;i++ )
{
ptr=(Byte*)Bmp->ScanLine;
for (int j=0;jWidth; j++ )
{
b=ptr[j*3];
g=ptr[j*3+1];
r=ptr[j*3+2];
if(r==0&&g==0&&b==0&&iHeight&&jWidth)
{
sum=sum+1;
X=X+j;
Y=Y+i;
XX=X/sum;
YY=Y/sum;
Form1->Edit1->Text=XX;
Form1->Edit2->Text=YY;
Form1->Edit3->Text=sum;
}
}
}
}
程式Run時,沒有錯誤出現
但真正去開圖執行查面積及質心時,就會當機 ~"~
上面的程式有需要修改到那裡嗎? 因為我執行時都沒有錯誤訊息出現
不知從何下手
另外請教有大大知道為什麼他質心要設到XX跟YY嗎?
|