如何理解"断言失败" openCV中的错误?

时间:2014-02-18 19:34:57

标签: opencv

我在尝试从原始图像创建ROI时出现以下错误。我理解错误的含义(我的意思是,我理解其中的原因)。 但我不明白,我的代码中哪一行给了我这个错误?在我的整个代码中,有几个地方我从原始框架创建ROI。

错误:

OpenCV Error: Assertion failed (0 <= roi.x && 0 <= roi.width && roi.x + roi.width <=      m.cols && 0 <= roi.y && 0 <= roi.height && roi.y + roi.height <= m.rows) in Mat, file /tmp/buildd/ros-hydro-opencv2-2.4.6-3precise-20140130-1854/modules/core/src/matrix.cpp, line 323
terminate called after throwing an instance of 'cv::Exception'


 what():  /tmp/buildd/ros-hydro-opencv2-2.4.6-3precise-20140130-1854/modules/core/src/matrix.cpp:323: error: (-215) 0 <= roi.x && 0 <= roi.width && roi.x + roi.width <= m.cols && 0 <= roi.y && 0 <= roi.height && roi.y + roi.height <= m.rows in function Mat

2 个答案:

答案 0 :(得分:2)

在调试器中运行代码并查看失败的位置,或检查堆栈跟踪以查看调用它的函数。

或者,如果你不能这样做,请在每个roi电话前放一个printf("ok1");等。

答案 1 :(得分:0)

除非你做一些事情要找到它,否则无法知道你的代码的哪一行被抛出,例如:

  1. 使用调试器并在每个使用ROI的行中断
  2. 在使用ROI的每一行周围放置Try-Catch块并写出错误。
  3. 根据使用投资回报率的经验,您可能尝试在某处使用投资回报率对图像进行子集化,并且您已经超出界限。或您的投资回报率为0,0。