2014-09-21 134 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作为试图编辑条目的模板。

相关问题