我正在使用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;
}
}
}
您正尝试访问不在图像范围内的某些像素。
试着改变
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()
。