我试图找到从最大值开始的行矩阵中非零序列的边界,然后将边界外的值设置为零。
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
的单个元素?
程序崩溃表明您可能超出了矩阵的边界。检查以下内容:
- maxloc。x & lt;280
- sum_r。cols == 280