【问题标题】:OpenCV findContours causes Debug Assertion Failed at returnOpenCV findContours 导致 Debug Assertion Failed at return
【发布时间】:2016-08-16 04:23:23
【问题描述】:

我正在使用 OpenCV v 2.4.8 在 Visual Studio 2013 上编程。 这是我的代码

#define _CRT_SECURE_NO_WARNINGS

#include <cv.h>
#include <highgui.h>

int main(int argc, char* argv[])
{
    cv::Mat image = cv::imread(argv[1], 0);
    image = image > 100;
    std::vector<std::vector<cv::Point> > contours;
    cv::findContours(image, contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);
    return 0;
}

在发布模式下一切正常,我不明白为什么它在调试模式下不能正常工作。它导致调试断言在return 0; 失败

(表达式:_pFirstBlock == PHead)。

我想轮廓有问题。

非常感谢您的帮助。

【问题讨论】:

  • 如果在return 0;之前添加cv::imshow("img", image);,则没有调试失败。
  • 在 Visual Studio 2012 上一切正常。

标签: c++ debugging opencv


【解决方案1】:

在属性下 > C++ > 代码生成 > 运行时库:
如果 MSVC 运行时库设置为多线程调试 DLL (/MDd),那么这没问题(它工作正常)。

如果 MSVC 运行时库设置为多线程调试 (/MTd),则会抛出此错误,可通过以下说明进行修复。

【讨论】:

  • 我正在使用 /MDd,但我有这样的问题。如果我设置 /MTd 它甚至不会被编译。 @Surinder,你用的是什么版本的 Visual Studio?
  • 我使用 Visual Studio 2012
  • 在 Visual Studio 2012 上一切正常。堆错误仅在 Visual Studio 2013 上发生。
猜你喜欢
  • 1970-01-01
  • 2012-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-12
  • 2021-02-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多