Я работаю над проектом на 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;
}
}
Делая это, я получаю все черные пиксели на изображении. Но я не знаю, как найти центр тяжести объекта.
Если объект имеет однородную плотность, центроид может быть рассчитан путем вычисления среднего значения всех координат черных пикселей.
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;
}
Других решений пока нет …