【问题标题】:How to find the centroid of a object?如何找到物体的质心?
【发布时间】:2016-02-28 01:32:54
【问题描述】:

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

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

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

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

    }

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

【问题讨论】:

  • 你为什么让你的问题变得更糟?
  • 我正在修改我的翻译
  • 是你不知道质心公式的问题吗?还是你不知道怎么写计算公式的代码的问题?
  • 嗨@RaymondChen 我在下一条评论中找到了答案...谢谢
  • 只是想帮助你提出更好的问题,而不是希望人们能明白你的意思。

标签: c++ centroid


【解决方案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;
}

【讨论】:

  • @DamarisPeralesOjeda:如果它对您有帮助,请不要忘记接受这个答案,
猜你喜欢
  • 2013-05-13
  • 1970-01-01
  • 2012-10-07
  • 1970-01-01
  • 2015-02-27
  • 1970-01-01
  • 1970-01-01
  • 2020-10-02
  • 1970-01-01
相关资源
最近更新 更多