OpenCV常见错误

其实实际操作中遇到的是第二种情况,我在做相机标定的时候,通过文件函数导入图片的时候,在导入的图片文件名的 .txt 文件中,后面多加了几行换行,导致文件在识别不到图片名称,还要输出图片,因此导致错误。

如何发现的:因为我只导入了14张图片,但输出框内却显示到了15,然后看了这位博主的博客,有所感悟,将文本导入文件的换行符去了,再次运行下,成功了,没有出现问题。

第一个错误:OpenCV Error: Assertion failed dims =2 data i0 size.p[0] i1,

第二个错误:OpenCV Error: Bad flage

本人在在调试过程中遇到的两个常见的OpenCV Error,跟大家分享一下解决办法:

第一个:OpenCV Error: Assertion failed i0 < size.p[0] && < i1,后面一大串

经过调试发现发生这种错误的原因在于,你访问构造矩阵时越界了,所以报错,,例如:

cv::Mat mat1 = cv::Mat::zeros(480,640,CV_8UC1);

mat1.at(481,643)

你构造的mat1为640X480的矩阵,你却访问了643X481那就肯定会出错,所以在每次访问之前一定要 记得加上

if(i>=0 && i=0 && j< mat1.rows)

mat1.at(j,i);

这样 就可以保证你访问的元素在这个行,列之内了。

第二个错误 OpenCV Error: Bad flage  

发生这种错误的原因在于你构造的矩阵行或者列为0,而你又要求显示该图片,故报错:

例如:

cv::Mat mat2 =  cv::Mat::zeros(480,0,CV_8UC1);
cv::imshow(“mat”, mat2);
cv::waitKey(0);

就会在imshow这里报错。

肯定会想构造矩阵的时候肯定不会把行和列设置成0,可有可能你将其他的实参传入的时候,这个参数本身就为0,稍不注意就会出错,所以一定要养成良好的编写代码的习惯

 

你可能感兴趣的:(opencv)