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;}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
得到的结果为:
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’
于是将需要检测的图像尺寸缩小,即可以正常显示结果。
令人疑惑的是,出现异常的图片甚至比可以正常显示结果的图片尺寸更小。因此出现问题的原因,和图片尺寸非直接挂钩,而可能是计算过程中产生的内存溢出。
赞 (0)