opencv断言(一般)

Mer*_*ury 6 c++ opencv

在运行时发现了一些(大多数)opencv错误 - 使用CV_64而不是CV_32,访问超出范围等.这使得调试不是一件容易的事,至少当你因为不同的原因不能使用调试模式
时.发生错误,opencv在assert(CV :: ASSERT宏)上停止并确切地告诉它在opencv源中的位置.
无论如何要告诉调用代码(我的代码)中发生错误的位置?
假设我们当然处于发布模式(没有断点 - 只有控制台输出)
谢谢

kar*_*lip -4

是的,通常很容易判断 OpenCV 何时失败:您所需要做的就是检查每个函数调用的返回,并在发生失败时打印一条错误消息。

  • 我们一直在 C++ 中工作,并且断言语句肯定会捕获错误。大多数函数返回 void (例如:http://docs.opencv.org/modules/features2d/doc/common_interfaces_of_descriptor_extractors.html#descriptorextractor-compute)。这使得它们相当难以理解,每次出错时我们都会通过挖掘源代码来解决。如果您有任何建议可以减轻这个过程的痛苦,我很想听听。 (2认同)
  • 是的,我有一个非常好的建议,可以让这个过程少得多痛苦:不要只打印错误的位置(如当前所做的那样,例如 OpenCV Error: ..... XXX.cpp, line AAA),而是打印整个错误调用堆栈(例如:OpenCV 错误:..... XXX.cpp,AAA 行,从 YYY.cpp 调用,从 .... 调用 BBB 行)。虽然会更混乱,但这会提供更多有关错误的信息 (2认同)