Как найти центр тяжести объекта?

Я работаю над проектом на C ++, и у меня возникают проблемы при попытке найти центроид (координаты x и y) объекта …

У меня есть изображение размером 250×250 пикселей, это изображение белого цвета с объектом черного цвета, и мне нужно найти центр тяжести этого черного объекта (этот черный объект представляет собой геометрическую фигуру).

Я считаю все черные пиксели с этим:

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

}

Делая это, я получаю все черные пиксели на изображении. Но я не знаю, как найти центр тяжести объекта.

-2

Решение

Если объект имеет однородную плотность, центроид может быть рассчитан путем вычисления среднего значения всех координат черных пикселей.

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;
}
1

Другие решения

Других решений пока нет …