# OpenCV Error: Assertion failed (_step >= minstep) in cv::Mat::Mat
又是一个因为自己的愚蠢犯的错误,花了半天找问题出在哪,先说结论:
参与矩阵乘法运算的两个Mat的数据类型不同,导致MatExpr在转Mat或Mat_<>的时候报该错误。
Mat a = Mat::eye(6,6,CV_32FC1);
Mat_\<double> b = Mat_\<double>::eye(6,6);
//阿巴阿巴阿巴...
Mat c = b*a;
两个窒息操作:
1.Mat和Mat_<>混着用(其实没什么问题,只要你能保证混着计算时两边的数据类型相同,改成Mat_<float>就不会报错了。这是很不好的编程习惯,主要是生搬硬套别人的代码造成的)
2.b*a的运算中一个是double,Mat是float
很奇妙的是ab不会报错,而ba就会报错(不过a*b即便不报错算出来的值也不对)