在迭代期间检查cvMat元素的值

时间:2014-03-01 09:24:59

标签: opencv image-processing visual-c++-2010

我正在使用CV_MAT_ELEM来访问cvmat的值而没有任何问题,但是当我在for循环中使用它时,它会给我一个错误(断言失败)。

 for (int i=0;i<=direction->cols;i++){
     for(int j=0;j<=direction->rows;j++){
         if ((CV_MAT_ELEM(*direction,float,i,j)<22.0) ) {
             CV_MAT_ELEM(*direction,float,i,j)=0;
        }
     }
 }

1 个答案:

答案 0 :(得分:1)

您正尝试访问一些不在图像范围内的像素。

尝试更改

 for (int i=0;i<=direction->cols;i++){
               ^^
     for(int j=0;j<=direction->rows;j++){
                  ^^

 for (int i=0;i<direction->cols;i++){
     for(int j=0;j<direction->rows;j++){

P.S。:正如@berak评论的那样,您仍在使用旧的OpenCV API,即使用IplImageCV_MAT_ELEM。尝试使用新的API,即相应的Matat()