OpenCV KalmanFilter::predict()错误

OpenCV KalmanFilter::predict()错误,opencv,runtime-error,kalman-filter,predict,Opencv,Runtime Error,Kalman Filter,Predict,我试图在OpenCV上实现卡尔曼滤波器,因此我遵循了以下旋转点跟踪示例(OpenCV 2.4.3): 我使用的是OpenCV 2.4.2和QtCreator 4.7.4。所有的编译都很好,但是当我在代码末尾执行程序时崩溃了: int main(int, char**) { help(); Mat img(500, 500, CV_8UC3); KalmanFilter KF(2, 1, 0); Mat state(2, 1, CV_32F); /* (phi,

我试图在OpenCV上实现卡尔曼滤波器,因此我遵循了以下旋转点跟踪示例(OpenCV 2.4.3):

我使用的是OpenCV 2.4.2和QtCreator 4.7.4。所有的编译都很好,但是当我在代码末尾执行程序时崩溃了:

int main(int, char**)
{
    help();
    Mat img(500, 500, CV_8UC3);
    KalmanFilter KF(2, 1, 0);
    Mat state(2, 1, CV_32F); /* (phi, delta_phi) */
    Mat processNoise(2, 1, CV_32F);
    Mat measurement = Mat::zeros(1, 1, CV_32F);
    char code = (char)-1;

    for(;;)
    {
       randn( state, Scalar::all(0), Scalar::all(0.1) );
       KF.transitionMatrix = *(Mat_<float>(2, 2) << 1, 1, 0, 1);

       setIdentity(KF.measurementMatrix);
       setIdentity(KF.processNoiseCov, Scalar::all(1e-5));
       setIdentity(KF.measurementNoiseCov, Scalar::all(1e-1));
       setIdentity(KF.errorCovPost, Scalar::all(1));

       randn(KF.statePost, Scalar::all(0), Scalar::all(0.1));

       for(;;)
       {
          Point2f center(img.cols*0.5f, img.rows*0.5f);
          float R = img.cols/3.f;
          double stateAngle = state.at<float>(0);
          Point statePt = calcPoint(center, R, stateAngle);

          Mat prediction = KF.predict(); //it crashes here
       ...
int main(int,char**)
{
帮助();
材料img(500500,CV_8UC3);
卡尔曼滤波器KF(2,1,0);
材料状态(2,1,CV_32F);/*(φ,δφ)*/
垫工艺噪声(2,1,CV_32F);
Mat测量=Mat::零(1,1,CV_32F);
字符代码=(字符)-1;
对于(;;)
{
randn(state,Scalar::all(0),Scalar::all(0.1));
KF.transitionMatrix=*(Mat_u2;(2,2)对我来说很好。您可以尝试在它周围放置一个try/catch,看看哪里出了问题。