gpt4 book ai didi

c++ - 结构内的卡尔曼滤波器无法对其进行初始化

转载 作者:行者123 更新时间:2023-11-28 05:51:59 25 4
gpt4 key购买 nike

我想使用卡尔曼滤波器跟踪多个对象。所以,我正在做的是,我正在使用一个结构来定义对象的属性,并使用一个卡尔曼滤波器来跟踪它的点。 (如下)

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 循环中,我尝试为这些属性分配一些值。

   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 Kalman Filter Initialization Error ) 看到了一些使用卡尔曼滤波器进行多对象跟踪的方法。我哪里出错了?

最佳答案

sAsp.KF(4, 2, 0); 不能使用,因为 KF 是在您执行 sAsparagus sAsp; 时默认构建的。您不能在已构造的对象上调用构造函数。您可以使用临时的 KalmanFilter 分配给 KF,例如:

sAsp.KF = cv::KalmanFilter(4, 2, 0);

或者你可以像这样使用init()

sAsp.KF.init(4, 2, 0);

关于c++ - 结构内的卡尔曼滤波器无法对其进行初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35043320/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com