OpenCV使用rowRange/colRange断言错误:Assertion failed (!fixedSize() || ((Mat*)obj)->size.operator()()...

版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
}

结果:

猜你喜欢

转载自blog.csdn.net/YunLaowang/article/details/88568043
今日推荐