我想测试KalmanFilter用于跟踪目的,并发现几个教程总体看起来非常相似(因为它主要是初始化openCVs KalmanFilter并设置参数)。
我接受了这个实施:https://github.com/screename/Kalman-Filter-Tracker/blob/master/KalmanFilterTracker.ccp
我现在无法测试它,因为每当我启动程序时它都会崩溃。没有构建错误,但是当我开始调试时,它会显示"程序接收信号SIGSEGV - 分段错误的短消息。
调用堆栈显示第574行中 mat.hpp 存在问题:
int i = i0/cols, j = i0 - i*cols;
以及第1043行:
template<typename _Tp> inline _Tp& Mat_<_Tp>::operator ()(int i0)
{
return this->at<_Tp>(i0);
}
在KalmanFilter课程中,这些线条似乎令人不安:
measurement(0) = x;
measurement(1) = y;
带
Mat_<float> measurement;
并使用
初始化它measurement(2, 1);
measurement.setTo(Scalar(0));
有关可能导致问题的原因和/或如何解决问题的任何想法?我之前尝试过一些事情,但到目前为止还没有找到原因。 我感谢任何帮助。
答案 0 :(得分:2)
Mat_<float> measurement(2, 1); // alloc 2 rows, 1 col
measurement.setTo(Scalar(0));
不是:
Mat_<float> measurement; // an *empty* Mat.
measurement(2, 1); // invalid access on an *empty* Mat (would be out of bounds, too)