如何找到物体的质心?

时间:2016-02-28 01:32:55

标签: c++ centroid

我正在开发一个关于C ++的项目,我在尝试找到一个对象的质心(坐标x和y)时遇到了问题......

我有250x250像素的图像,这个图像是白色的,带有黑色物体,我需要找到这个黑色物体的质心(这个黑色物体是几何图形)。

我用这个计算所有黑色像素:

  if(aregs_in[i] != '1) // '1 means 'fill with 1's'
      // do stuff

这样做我得到图像中的所有黑色像素。但我不知道如何找到物体的质心。

1 个答案:

答案 0 :(得分:1)

如果物体密度均匀,可以通过计算黑色像素的所有坐标的平均值来计算质心。

int c = 0;
double x = 0, y = 0;
for(i=0; i<high; i++)
{
    for(j=0; j<width; j++)
    {
        if(Img->imx[i*width+j]==0)
        {
             c=c+1;
             x=x+j;
             y=y+i;
        }
    }
}
if(c>0)
{
    x=x/c;
    y=y/c;
}