Если вы не связаны с фильтром Калмана, есть другое решение этой проблемы. Обычно такая проблема решается с помощью оптического потока функций в последовательности изображений.
Пример в OpenCV можно найти здесь .
Идея состоит в том, чтобы найти важные функции для отслеживания вашего изображения (круги, углы и т. Д. c). Это можно сделать с помощью удобной функции для начала, и вы можете не знать, что использовать:
p0 = cv2.goodFeaturesToTrack(old_gray, mask = None, **feature_params)
Затем вы передаете функции в функцию оптического потока вместе с двумя последовательными изображениями, и она выполнит некоторые magi c:
p1, st, err = cv2.calcOpticalFlowPyrLK(old_gray, frame_gray, p0, None, **lk_params)
В вашем случае вы упомянули, что хотели бы использовать ID. Я понятия не имею, как выглядят ваши данные, но я предлагаю вам использовать на своем изображении функцию goodFeaturesToTrack
и посмотреть, что получится. Затем вы получите представление о том, что можно использовать для отслеживания.
После этого вы можете использовать указанную c функцию, которая извлекает ваши любимые функции. Допустим, вы нашли функцию, которая извлекает функции изображения киви из изображения, возможно, из эллипсов. Скажи один эллипс на киви. Затем вы помещаете этот список в функцию отслеживания, и он сообщает вам, куда они попали на следующем изображении. Список имеет фиксированный порядок, который можно использовать в качестве идентификатора.
Документы OpenCV для функции можно найти по адресу cv2.calcOpticalFlowPyrLK ()
Источник: OpenCV