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

问题描述 投票:0回答:1

我正在使用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;
        }
     }
 }
opencv image-processing visual-c++-2010
1个回答
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()

© www.soinside.com 2019 - 2024. All rights reserved.