opencv 卡尔曼滤波多对象跟踪错误
opencv Kalman filter multiple object tracking error
我一直在尝试使用卡尔曼滤波器进行多对象跟踪。这是我的代码,
for (int i =0; i<vGlobal.size(); i++) // Vector of objects of interest
{
cv::Point pTemp = cv::Point(vGlobal[i].iX, vGlobal[i].iY);
cv::KalmanFilter kTempKF(4,2,0);
kTempKF.statePre.at<floatt>(0) = pTemp.x;
kTempKF.statePre.at<float>(1) = pTemp.y;
kTempKF.statePre.at<float>(2) = 0;
kTempKF.statePre.at<float>(3) = 0;
kTempKF.transitionMatrix = *(cv::Mat_<float>(4,4)<< 1,0,1,0, 0,1,0,1, 0,0,1,0, 0,0,0,1);
cv::setIdentity(kTempKF.measurementMatrix);
cv::setIdentity(kTempKF.processNoiseCov, cv::Scalar::all(1e-4));
cv::setIdentity(kTempKF.measurementNoiseCov, cv::Scalar::all(10));
cv::setIdentity(kTempKF.errorCovPost, cv::Scalar::all(.1));
vKalmanFilters.push_back(kTempKF);
}
我正在使用卡尔曼滤波器的向量来跟踪我的每个对象。我已经完成了上述过滤器的初始化。现在,我尝试在下面的代码中按如下方式进行检查和测量。
for (int i=0; i<vKalmanFilters.size();i++)
{
cv::Mat mPrediction = vKalmanFilters[i].predict();
cv::Point pPredict(mPrediction.at<float>(0), mPrediction.at<float>(1));
mMeasurement(0) = vGlobal[i].iX;
mMeasurement(1) = vGlobal[i].iY;
cv::Mat mEstimated;
mEstimated = vKalmanFilters[i].correct(mPrediction); // Run time Error occurs here
}
当我尝试运行这个程序时,我在正确的(预测)中出现运行时错误
OpenCV Error: Assertion failed (C.type() == type && (((flags&GEMM_3_T) == 0 && C.rows == d_size.height && C.cols == d_size.width) || ((flags&GEMM_3_T) != 0 && C.rows == d_size.width && C.cols == d_size.height))) in gemm, file /build/buildd/opencv-2.4.8+dfsg1/modules/core/src/matmul.cpp, line 741
terminate called after throwing an instance of 'cv::Exception'
what(): /build/buildd/opencv-2.4.8+dfsg1/modules/core/src/matmul.cpp:741: error: (-215) C.type() == type && (((flags&GEMM_3_T) == 0 && C.rows == d_size.height && C.cols == d_size.width) || ((flags&GEMM_3_T) != 0 && C.rows == d_size.width && C.cols == d_size.height)) in function gemm
我仍然是卡尔曼滤波器的初学者。错误发生在预测点。我的方法完全错误吗?请有人解释我哪里出错了。
在校正步骤中,您应该使用mMeasurement
(2x1 矩阵)而不是mPrediction
(4x1 矩阵):
mEstimated = vKalmanFilters[i].correct(mMeasurement);
鉴于您确实做到了:
cv::KalmanFilter kTempKF(4,2,0);
// 4 dynamic params <-- your state, e.g. [x y dx dy]
// 2 measurements params <-- your mMeasurement [x y]
相关文章:
- 光线跟踪器灯光反射错误
- 为什么在c++中使用Delete[]会出现跟踪/断点错误
- 使用valgrind跟踪段错误,并了解valgrind输出
- 错误:未知类型名称"功能跟踪"
- C 错误跟踪意外令牌
- 需要帮助跟踪此代码中的分段错误
- 跟踪器示例中的OpenCV 3.0链接器错误
- 添加 -lrt 时跟踪编译器错误"undefined reference"不起作用
- 我无法跟踪函数的错误
- 人脸跟踪错误 Opencv
- C++错误:调用"跟踪::跟踪(字符,字符)"没有匹配函数
- opencv 卡尔曼滤波多对象跟踪错误
- cpp 链接器失败,无法跟踪错误源
- 如何从这些信息中跟踪错误代码
- 如何跟踪LLVM验证功能错误"Expected no forward declarations!"?
- 无法使用sqlite3数据库表的所有行中的数据填充列表,错误:跟踪/断点陷阱(核心转储)
- 如何解决堆栈跟踪错误
- mystackwalker.cxx(29):错误 C3861:"捕获堆栈回跟踪":找不到标识符
- Valgrind内存泄漏错误的文件跟踪
- 在c++中绘制填充立方体,崩溃,没有有用的错误可以跟踪