Как использовать венгерский алгоритм для сопоставления соответствующих целей между двумя последовательными кадрами и, наконец, понять, что он может судить, существует ли движущаяся цель в следующем кадре или уже существует?Я не знаю, как начать в реальной реализации программы с использованием библиотеки C ++ и Opencv3?
Теперь я могу получить центроиды движущейся цели, обнаруженные фильтром Калмана в каждом кадре.
// Это часть основной функции.
kalmanv.clear();
initKalman(0, 0);
Point s, p;//s:kalmanCorrect,p:kalmanPredict
//variable definition
vector<vector<Point>> contours;//rectangular frame position around the contour
vector<Vec4i> hierarchy;
int count = 0;
Mat frame, gray, mogMask;
char numText[8];
while (capture.read(frame)) {
...
findContours(mogMask, contours, hierarchy, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE, Point(0, 0));
//definition of moment and center moment
vector<Moments> mu(contours.size());
vector<Point2f> mc(contours.size());
...
mu[t] = moments(contours[t], false);//calculate moment
mc[t] = Point2f(mu[t].m10 / mu[t].m00, mu[t].m01 / mu[t].m00);//calculate center moment
measurement(0) = mc[t].x;
measurement(1) = mc[t].y;
p = kalmanPredict();
Point center = Point(selection.x + (selection.width / 2), selection.y + (selection.height / 2));//calculate centroid
s = kalmanCorrect(center.x, center.y);
//I don't know what to do next.
}
У меня есть набор точек центроидов для движущейся цели, а затем как использовать данные в сочетании с венгерским алгоритмом?