2014-02-16 52 views
0

我正在使用OpenCV v 2.4.8在Visual Studio 2013上进行编程。 这里是我的代码OpenCV findContours导致Debug Assertion在返回时失败

#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)。

我想轮廓有些问题。

非常感谢帮助。

+0

如果要在'return 0之前'添加'cv :: imshow(“img”,image);''''''''''''''''''''''''''''没有调试失败。 – skap

+0

在Visual Studio 2012上一切正常。 – skap

回答

0

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

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

+0

我正在使用/ MDd,但我有这样的问题。如果我设置了/ MTd,它将不会被编译。 @Surinder,你使用什么版本的Visual Studio? – skap

+0

我使用Visual Studio 2012 –

+0

在Visual Studio 2012上一切正常。堆错误仅在Visual Studio 2013上发生。 – skap