OpenCV因堆栈溢出或资源分配错误而崩溃

时间:2014-02-11 08:04:38

标签: c++ multithreading qt opencv

我在VS2010下有一个多线程C ++ Qt程序,其中一个线程运行图像处理算法。

我知道我的算法有效,因为它在控制台应用程序中运行良好,我只是将其复制并粘贴到项目中......然后我得到了所有这些奇怪的错误。

代码是:

//...some stuff

leftMat = imread("M:/Desktop/PsEyeRight1.jpg", CV_LOAD_IMAGE_COLOR); 
cvtColor(leftMat, leftMat, CV_RGB2GRAY);       
GaussianBlur(leftMat, leftMat, Size(3, 3), 0, 0, 4);                   
threshold(leftMat, leftMat, 150, 255, THRESH_BINARY); contoursLeft.clear();            
hierarchyLeft.clear();                        
Mat contourImage = leftMat.clone();           
findContours(contourImage, contoursLeft, hierarchyLeft, CV_RETR_LIST, CV_CHAIN_APPROX_NONE, Point(0, 0));

//...some stuff

当执行命中findContours()时,我得到一个StackOverflow为“ SARA.exe中0x100a9985(opencv_core246d.dll)的未处理异常:0xC00000FD:堆栈溢出。

所以我要配置属性>链接器>系统>堆叠预留大小并将其更改为“ 100000000 ”(100MB)

这次错误更改... cvtColor()崩溃,错误“ SARA.exe中0x774fc41f处的未处理异常:Microsoft C ++异常:并发:: scheduler_resource_allocation_error在内存位置0x1f63ad64 .. “在concrt.h,如果我删除cvtColor()Threshold()会以同样的方式崩溃。

我正在将其编译为/ MDd(多线程调试DLL),我还在OpenCV上运行CMake以清除选项“BUILD_WITH_STATIC_CRT”,我再次编译openCV,我看到的项目都有/ MDd同样。

有没有人猜测发生了什么?

编辑: 为了说清楚,我的系统中有足够的可用内存来运行程序。

0 个答案:

没有答案