2014-04-17 35 views
0

我使用卡尔曼滤波器进行某些图像跟踪,并且有时需要重新排序数据以确保不同向量的索引相同。我通过快速逻辑检查来确保当前帧的位置在最后一帧的容差范围内。如果是这种情况,我将数据移动到第二个矢量以匹配新的索引,然后将完全重新排列的矢量移回原始矢量。如下图所示:OpenCV错误:在向量间移动数据时声明失败

void vector_order(vector<Rect> found_filtered) 
{ 
    int j, i; 
    vector<KalmanFilter> organise_KF(10); 
    vector<kal_ret> organise_kal(10); 
    vector<FilterHistory> organise_MAV(10); 
    for (i=0; i<found_filtered.size(); i++) 
    { 
     for (j=0; j<track_ret.size(); j++) //compare tracks for kalman filter 
     { 
      if (found_filtered[i].x >= track_ret[j].measPt.x-12 || found_filtered[i].x <= track_ret[j].measPt.x+12) 
      { 
       if (found_filtered[i].y >= track_ret[j].measPt.y-30 || found_filtered[i].y <= track_ret[j].measPt.y+30) 
       { 
        organise_kal[i] = track_ret[j]; 
        organise_KF[i] = KF[j]; 
        break; 
       } 
      } 
     }//if there is no match that index will stay empty to be filled by the filter return 

     for (j=0; j<filter_ret.size(); j++) //compare tracks for moving average filter 
     { 
      if (found_filtered[i].x >= filter_ret[j].current.x-12 || found_filtered[i].x <= filter_ret[j].current.x+12) 
      { 
       if (found_filtered[i].y >= filter_ret[j].current.y-30 || found_filtered[i].y <= filter_ret[j].current.y+30) 
       { 
        organise_MAV[i] = filter_ret[j]; 
       } 
      }//if there is no match that index will stay empty to be filled by the filter return 
     } 
    } 

    for (i=0; i<10; i++) 
    { 
     track_ret[i] = organise_kal[i]; 
     filter_ret[i] = organise_MAV[i]; 
     KF[i] = organise_KF[i]; 
    } 
} 

问题一旦系统进入使用数据为它引发以下错误第二次是:

OpenCV Error: Assertion failed (dims <= 2 && (unsigned)i0 < (unsigned)(size.p[0])*size.p[1]) && elemSize() == (((((DataType<_Tp>::type) & ((512 - 1) << 3)) >> 3) + 1) << ((((sizeof(size_t)/4+1)*16384|0x3a50) >> ((DataType<_Tp>::type) & ((1 << 3) - 1))*2) & 3))) in unknown function, file C:\opencv\build\include\opencv2/core/mat.hpp, line 569 

我是新来的编码。有没有更好的方式来重新排序数据,或者我错过了一个简单的步骤?

+0

我意识到了这个问题。我没有在新的矢量中初始化卡尔曼滤波器,所以当系统使用新的滤波器时,没有矩阵数据或缩放集。现在一切都好多了。感谢您的期待 – user3544531

回答

0

我意识到了这个问题。我没有在新的矢量中初始化卡尔曼滤波器,所以当系统使用新的滤波器时,没有矩阵数据或缩放集。现在一切都好多了。感谢您的期待

相关问题