1

所以我正在尝试使用opencvsharp创建一个增强现实跟踪器,但我遇到了内存泄漏问题。

我正在尝试从相机图像(这是我的标记)中识别矩形我很确定有问题的代码是

        CvSeq<CvPoint> firstcontour = null;

        List<MarkerRectangle> rectangles = new List<MarkerRectangle>();

        CvMemStorage storage = Cv.CreateMemStorage(0);
        CvMemStorage storagepoly = Cv.CreateMemStorage(0);

        IplImage gsImageContour = Cv.CreateImage(Cv.GetSize(thresholdedImage), thresholdedImage.Depth, thresholdedImage.NChannels);
        //find contours
        Cv.Copy(thresholdedImage, gsImageContour, null);
        int contourCount = Cv.FindContours(gsImageContour, storage, out firstcontour, CvContour.SizeOf,
             ContourRetrieval.CComp, ContourChain.ApproxSimple, Cv.Point(0, 0));

        CvSeq<CvPoint>  polycontour = firstcontour.ApproxPoly(CvContour.SizeOf, storagepoly, ApproxPolyMethod.DP, 4, true);

我相当确定有问题的行是:

        int contourCount = Cv.FindContours(gsImageContour, storage, out firstcontour, CvContour.SizeOf, ContourRetrieval.CComp, ContourChain.ApproxSimple, Cv.Point(0, 0));

和/或

        CvSeq<CvPoint>  polycontour = firstcontour.ApproxPoly(CvContour.SizeOf, storagepoly, ApproxPolyMethod.DP, 4, true);

但是我不确定我可能做错了什么,因为它们没有存储在任何全局变量中,我希望在方法结束时释放内存。

可能是这个错误,在这种情况下,我怀疑我缺乏修复它的技术专长,因为除了 uni 的几门课程外,我没有使用过非托管代码。但是,我尝试实施它在附加信息下列出的修复程序,但没有奏效,所以我想这可能不是我的问题的原因。

4

0 回答 0