openCV中的KalmanFilter跟踪 - 程序接收信号SIGSEGV

时间:2014-10-13 12:41:42

标签: c++ opencv segmentation-fault sigsegv

我想测试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));

有关可能导致问题的原因和/或如何解决问题的任何想法?我之前尝试过一些事情,但到目前为止还没有找到原因。 我感谢任何帮助。

1 个答案:

答案 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)