2014-04-17 48 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

我意識到了這個問題。我沒有在新的矢量中初始化卡爾曼濾波器,所以當系統使用新的濾波器時,沒有矩陣數據或縮放集。現在一切都好多了。感謝您的期待

相關問題