2014-09-21 133 views
0

我有以下問題 - 我試圖運行下面的代碼,但無意中發現這個worning:opencv的錯誤:斷言失敗

OpenCV Error: Assertion failed (dims <= 2 && data && (unsigned)i0 < (unsigned)size.p[0] && (unsigned)(i1*DataType<_Tp>::channels) < (unsigned)(size.p[1]*channels()) && ((((sizeof(size_t)<<28)|0x8442211) 
((DataType<_Tp>::depth) & ((1 << 3) - 1))*4) & 15) == elemSize1()) in unknown function, file C:\opencv231\build\include\opencv2/core/mat.hpp, line 537. 

代碼:

int l = (int)Lines.size(); 
    Mat sep_seam_map = Mat::zeros(n,l - 1, CV_32F);// initialize the seperating seam map of coordinates. 


for (int k = 1; k < l - 1; k++){ 
    //apply constrained seam carving for each pair of text lines: 

    int L_a = Lines[k].first.x; 
    int L_b = Lines[k + 1].first.x; 

    for (int row = 2; row < n; row++) { 
     for (int col = L_a; col < L_b; col++) { 
      //Defining the bounderies upon which to find the minimum value seams. 
      int left = std::max(col - 1, L_a); 
      int right = std::min(col + 1, L_b); 
      double minpath,max; 
      Mat last_row = energy_map.operator()(Range(row - 1, row), Range(left, right)); 
      minMaxLoc(last_row, &minpath, &max); 
      std::cout << last_row << " " << " " << endl; 
      std::cout << "minpath: "<<minpath << " " << " " << endl; 


      //End Cases - 

      if (minpath == 0) { 
       if (col > left) 
        energy_map.at<float>(row, col) = energy_map.at<float>(row - 1, right); 
       if (col < right) 
        energy_map.at<float>(row, col) = energy_map.at<float>(row - 1, left); 
      } 
      else 
       std::cout << energy_map.at<float>(row, col) = energy_map.at<double>(row, col) + minpath; 

      } 


     } 

我我已經讀過以前關於這個錯誤的討論,這是訪問矩陣條目時出錯的結果,但它看起來並不是我做錯了什麼(但顯然我做錯了什麼..)我會非常樂意提供任何幫助。 此致敬禮。

回答

0

好吧,所以我做了misshandeld訪問矩陣條目 - 我應該使用uchar作爲試圖編輯條目的模板。

相關問題