Opencv的“findContours”错误:线程已停止,代码为-1073740777

时间:2016-06-06 12:32:06

标签: c++ multithreading opencv

我目前正在开发一个程序来处理3D相机的数据。不幸的是,我使用opencv的“findcontours”函数时出错了。

事实上,当我尝试在我的程序中使用它时,我会遇到这些错误:

  

线程0x1a4c停止,代码为0(0x0)

     

线程0x188c停止,代码为-1073740777(0xc0000417)。

     

线程0x1c08因代码-1073740777(0xc0000417)而停止。

     

线程0x1330因代码-1073740777(0xc0000417)而停止。

     

线程0x1c90因代码-1073740777(0xc0000417)而停止。

     

线程0x1ed4因代码-1073740777(0xc0000417)而停止。

     

线程0x10d4停止,代码为-1073740777(0xc0000417)。

     

线程0x1a80停止,代码为-1073740777(0xc0000417)。

     

线程0x11bc停止,代码为-1073740777(0xc0000417)。

     

线程0x1970因代码-1073740777(0xc0000417)而停止。

     

线程0x1428以-1073740777(0xc0000417)停止。

     

程序'[7932] Project_Camera.exe'已停止,代码为-1073740777(0xc0000417)。

此外,我曾经有一个窗口告诉我:

  

0xc0000417处的未处理异常...(ntdll.dll)。内存段   已经损坏了。

(对不起,如果它不够精确,但我只记得这个,并没有保存它的确切内容。另外,它是真正的错误的翻译因为我的VS是法语所以我道歉,如果词汇不是确切的同样的。)

这是我的代码:

float function (input)
{
   // First i get the datas from the camera and save it in an array of the size DATA_SIZE :
   // float distance[DATA_SIZE] (This array only contain ones and zeros)

   Mat img = Mat(Size(NB_ROW, NB_LINE), CV_32FC1, distance);

   Mat element_o = getStructuringElement(MORPH_ELLIPSE, Size(SIZE_OPEN, SIZE_OPEN), Point(-1, -1));
   Mat element_c = getStructuringElement(MORPH_ELLIPSE, Size(SIZE_CLOSE, SIZE_CLOSE), Point(-1, -1));

   Mat img_output;
   morphologyEx(img, img_output, MORPH_OPEN, element_o);

   Mat img_close;
   morphologyEx(img_output, img_close, MORPH_CLOSE, element_c);

   namedWindow("Image from morph ", CV_WINDOW_AUTOSIZE);
   imshow("Image from morph ", img_close);
   waitKey(0);

   ///Convert the image into B&W CV_8U format for the findContours function
   Mat bwimg;
   img_close.convertTo(bwimg, CV_8U);

   /// Find contours
   vector<vector<Point>> contours;
   printf("here"); // I see this one 
   findContours(bwimg, contours, CV_RETR_LIST, CV_CHAIN_APPROX_NONE);//SIMPLE, Point(0, 0));
   printf("here2"); // this one never show up, the program stops right before
   //... ( Then i get the minAreaRect from the contour and deduce an angle ) 
   return angle;
}

我的VS解决方案拥有2个项目: DLLCam:我的函数被定义并构建为dll Project_Camera:我调用dll中的函数

要使用opencv,我在此链接(http://funvision.blogspot.fr/2015/11/install-opencv-visual-studio-2015.html)之后构建它以获得32位3.1版本的opencv。 我正确设置了项目的属性以使用库。

然后,我想知道可能导致问题的原因,以及我如何解决它。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

正如Miki在评论中所说,问题来自我正在使用的库(opencv_310.lib)。

我实际上错过了编译OpenCV解决方案的INSTALL项目以进行调试。然后,文件&#34; opencv_310 d .lib&#34;失踪了,我想要联系他们。 在为Debug编译之后,我找到了那些文件并在链接器中使用它们 - &gt;输入,从而解决问题。