我正在使用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;
}
}
}
答案 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,即使用IplImage
和CV_MAT_ELEM
。尝试使用新的API,即相应的Mat
和at()
。