我正在研究自动车牌识别,我正在提供汽车图像作为输入,但我得到了这个例外
在Project3.exe中的第一次机会异常0x000007FEFD38A06D: Microsoft c++ exception: cv:: exception at memory location 0x0000000000249160.
如果有此异常的处理程序,则可以安全地继续执行程序。
如果我选择继续选项,我得到
未处理的异常在0x000007FEFD38A06D在Project3.exe: Microsoft c++ exception: cv::异常在内存位置0x00000000002590D0.
如果有此异常的处理程序,则可以安全地继续执行程序。
如果我选择继续选项,我得到
调试断言失败行1140表达式:vector script out of range
谁能告诉我这些错误是什么意思?
在Project3.exe中的0x000007FEFD38A06D的第一次机会异常:Microsoft c++ exception: cv::内存位置0x0000000000249160的异常。如果有此异常的处理程序,则可以安全地继续执行程序。
让我们来分析一下:
- First-chance exception:这是调试器告诉您已经抛出异常。这不是错误。如果你决定继续,异常将被传递给程序。
- Project3.exe中的0x000007FEFD38A06D:这是抛出异常时指令指针所在的位置。它对你不是很有用,但它有时可以用来找出在没有符号的构建中发生问题的地方。
- Microsoft c++ exception:这是一个c++异常,与结构化异常相反。
- cv::Exception:这是抛出的异常的名称。看起来像是OpenCV的一个例外。
- at memory location 0x0000000000249160:这是堆栈上异常对象的地址。同样,不是很有用。
按Continue将异常传递给程序。如果它被正确捕获,程序可以继续正常执行。如果这个异常没有处理程序,您将得到下一条消息:
未处理的异常在0x000007FEFD38A06D在Project3.exe: Microsoft c++异常:cv::异常在内存位置0x00000000002590D0。如果有此异常的处理程序,则可以安全地继续执行程序。
这意味着抛出了异常,但在任何地方都没有捕获处理程序。这很可能是编程错误,很可能是您的错误。看起来你调用了一个OpenCV函数,该函数抛出了一个cv::Exception
而失败,但你没有捕捉到它。
这通常会导致崩溃,但由于您在调试器中运行,因此可以选择忽略此异常。这就是Continue按钮在这个对话框中的作用。因此,代码不会抛出异常,而是继续执行,就像什么都没发生一样。这很可能最终失败,因为错误条件现在已经被忽略了。
调试断言失败行1140表达式:vector script out of range
。我不知道这发生在哪个文件中,但是在1140行的某个地方,std::vector
被索引为超出范围的值。这并不奇怪,因为您忽略了异常并允许程序继续。
长话短说:您需要捕获cv::Exception
并正确处理错误条件