Net.forward()出错的解决方式

个人环境为VS2015+opencv4.0,目标为使用Net.forward()实现Mask R-CNN目标检测的前向推断。出现的问题为,有些图片能正常检测,有些图片却出现CV:Exception(ucrtbase.dll)异常。

遂使用try catch查找错误:

			try
			{
				net.forward(outs, outNames);
			}
			catch (cv::Exception& e)
			{
				const char* err_msg = e.what();
				QString s1(err_msg);
				qDebug() << "exception caught: " << err_msg << s1<< endl;
			}

得到的结果为:
OpenCV(4.0.0) C:……\matrix.cpp:540: error: (-215:Assertion failed) r == Range::all() || (0 <= r.start && r.start < r.end && r.end <= m.size[i]) in function ‘cv::Mat::Mat’

于是将需要检测的图像尺寸缩小,即可以正常显示结果。
令人疑惑的是,出现异常的图片甚至比可以正常显示结果的图片尺寸更小。因此出现问题的原因,和图片尺寸非直接挂钩,而可能是计算过程中产生的内存溢出。

你可能感兴趣的:(Net.forward()出错的解决方式)