Я хочу отслеживать несколько объектов, используя Kalman Filter. Поэтому я использую структуру для определения свойств объекта, а также фильтр Калмана для отслеживания его точек. (Следующее)
struct sAsparagus
{
int iId;
int iFrameId;
int iWidth;
int iHeight;
int iX;
int iY;
int iZ;
cv::KalmanFilter KF; // Here I am defining the Kalman filter and cannot initialize.
};
Затем в цикле я пытаюсь присвоить некоторые значения этим свойствам.
for (CvBlobs::const_iterator it = blobs.begin(); it !=blobs.end();++it)
{
sAsparagus sAsp;
sAsp.iFrameId = iCounter;
sAsp.iWidth = (it->second->maxx - it->second->minx);
sAsp.iHeight = (it->second->maxy - it->second->miny);
sAsp.iX = it->second->centroid.x;
sAsp.iY = it->second->centroid.y;
sAsp.KF(4, 2, 0); //Here I am getting an error
vAspElements.push_back(sAsp);
}
Когда я бегу, я получаю ошибку следующим образом.
no match for call to ‘(cv::KalmanFilter) (int, int, int)’
sAsp.KF(4, 2, 0);
Как я могу инициализировать мой фильтр Калмана здесь? Правильный ли этот подход? Я тоже пришел сюда посмотреть (Ошибка инициализации фильтра Калмана OpenCV) некоторый подход для отслеживания нескольких объектов с использованием фильтра Калмана. Куда я иду не так?
sAsp.KF(4, 2, 0);
не может быть использован как KF
был построен по умолчанию, когда вы делаете sAsparagus sAsp;
, Вы не можете вызвать конструктор для уже созданного объекта. Вы можете назначить KF
с временным KalmanFilter
хотя вроде:
sAsp.KF = cv::KalmanFilter(4, 2, 0);
Или вы могли бы использовать init()
лайк
sAsp.KF.init(4, 2, 0);
Других решений пока нет …