我正在搜索轮廓,至少找到一个,正如我在调试器中看到的那样。 当我尝试将序列转换为点数组时,会抛出StackOverflowException(这就是我在这里的原因:-)。
我确定原因是缓冲区的分配错误,我对我在C,C ++中找到的示例有点困惑,但在C#中却没有。 OpenCvSharp使用以前从未使用过的泛型。
平台:x86上的Windows 7,Sharpdevelop 4.2.2
以下是代码段:
OpenCvSharp.CvMemStorage allContours = new OpenCvSharp.CvMemStorage();
OpenCvSharp.CvSeq<OpenCvSharp.CvPoint> contour = null;
OpenCvSharp.CvPoint[] border;
i = OpenCvSharp.Cv.FindContours (image[EDGE], allContours, out contour,
OpenCvSharp.CvContour.SizeOf, OpenCvSharp.ContourRetrieval.List,
OpenCvSharp.ContourChain.ApproxNone,
OpenCvSharp.Cv.Point(0,0));
if (i!=1)
{ Forms.MessageBox.Show( i.ToString() + " instead of 1 contours found", "Info");
return;
}
border = new OpenCvSharp.CvPoint [contour.Total];
OpenCvSharp.Cv.CvtSeqToArray<OpenCvSharp.CvPoint> (contour, out border);
这是程序崩溃的最后一行。