2014-02-16 101 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