Как найти евклидово расстояние между центроидом объекта в одном кадре и соседним кадром - PullRequest
3 голосов
/ 07 марта 2012

Мы делаем проект по подсчету транспортных средств (используя OpenCV). Теперь нам нужно найти евклидово расстояние от центра тяжести объекта в одном кадре до соседнего кадра ? В нашем проекте мы сделали поиск центроида.

Ответы [ 2 ]

5 голосов
/ 07 марта 2012

Я предполагаю, что камера не перемещалась между снимками, поэтому вам не нужно беспокоиться о регистрации.

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

double euclideanDist(Point p, Point q)
{
    Point diff = p - q;
    return cv::sqrt(diff.x*diff.x + diff.y*diff.y);
}

int main(int /*argc*/, char** /*argv*/)
{
    Point centroid1(0.0, 0.0);
    Point centroid2(3.0, 4.0);

    cout << euclideanDist(centroid1, centroid2) << endl;

    return 0;
}

Это выводит 5 (то есть, 3-4-5 треугольник) ...

Надеюсь, это поможет!

0 голосов
/ 02 декабря 2013

Если p и q относятся к типу int, убедитесь, что для типа (diff.x*diff.x + diff.y*diff.y) указано значение double или float.Таким образом, вы можете получить более точное евклидово расстояние.

...