版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/YunLaowang/article/details/88568043
博主在使用rowRange()时遇到了如下断言错误,虽然定位到了错误是在rowRange,但是仍找了半天原因,最后突然醒悟问题出在rowRange的用法上:rowRange(a,b)取的是a<=row<b,即边界范围为:[a,b)。因为这个小问题浪费了不少时间,这里记录一下,希望给遇到同样问题的同学提供一个解决思路。
- 错误提示:
Error: Assertion failed (!fixedSize() || ((Mat)obj)->size.operator()() == Size(_cols, _rows)) in cv::debug_build_guard::_OutputArray::create*
示例:
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main(int argc, char* argv[])
{
Mat temp = (Mat_<float>(3, 1) << 0, 1, 2);
Mat example = Mat::zeros(6, 1, CV_32FC1);
temp.copyTo(example.rowRange(0, 3));
for (size_t i = 0; i < example.rows; i++)
{
cout << example.at<float>(i, 0) << endl;
}
return 0;
}
结果: