修改数组时OpenCV程序崩溃了吗?

时间:2014-05-18 09:24:07

标签: c++ opencv

我试图在从最大点开始的行矩阵中找到一系列非零的边界,然后将边界外的值设置为零。

for(int i=maxloc.x; i < 280 ; i++){
    if(!foundBound && sum_r.at<uchar>(0,i) == 0){
        foundBound=true;
        bb.rightEdge = i;
    }
    else if(foundBound){
        cout << i << endl;
        sum_r.at<uchar>(0,i) = 0;     <--- offending line
    }
}

但是当我运行程序时程序崩溃了。如果我注释掉sum_r.at<uchar>(0,i) = 0;,那么程序运行正常直到结束。我也有一次不完整的记忆错误,但我无法复制它。是否还有更好的方法来访问Mat的各个元素?

1 个答案:

答案 0 :(得分:0)

程序崩溃表明您可能超出了矩阵的边界。请检查以下内容:

  • maxloc.x&lt; 280
  • sum_r.cols == 280