【opencv】错误提示OpenCV Error: Assertion failed <dims <=2 && data && <unsigned >i0 ...

来源:互联网 发布:手机实景地图软件 编辑:程序博客网 时间:2024/05/17 23:21

在opencv编程中遇到了这样一个问题,错误提示显示:


opencv Error: Assertion failed <dims <=2 && data && <unsigned >i0 < <unsigned>size.p[0]......


后边还有好长,具体见下图


===============================分割线==============================

出错说明

出错的地方位于opencv内部的“断言”错误。看相关代码,是你在调用opencv相关函数的时候参数不符合规则。

也就是说,你在访问某个Mat矩阵时越界了,所以报错。
===============================分割线==============================

解决办法

经排查,发现自己在访问图像像素时,将行、列顺序写反,导致错误出现。

错误前代码(仅展示出错部分)
//统计灰度级中每个像素在整幅图像中的个数for (int i = 0; i < nCols; i++){for (int j = 0; j < nRows; j++){nSumPix[(int)grayImage.at<uchar>(i, j)]++;}}
参数解释:nCols——列数。  nRows——行数。

改后代码
for (int i = 0; i < nRows; i++){for (int j = 0; j < nCols; j++){nSumPix[(int)grayImage.at<uchar>(i, j)]++;}}

就是将nCols与nRows的位置调换。
在我的程序里这个错误问题就这样的解决了。
===============================分割线==============================

最后要说的是,访问图像的像素时,一定要先行、再列的循环访问,次序不能换!!!

=============================END============================


阅读全文
0 0
原创粉丝点击