1

デバッガーで確認できるように、輪郭を検索していますが、少なくとも 1 つ見つかりました。シーケンスをポイントの配列に変換しようとすると、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);

プログラムがクラッシュするのは最後の行です。

4

0 に答える 0