首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何避免OpenCV内存不足异常?

如何避免OpenCV内存不足异常?
EN

Stack Overflow用户
提问于 2015-03-29 01:23:32
回答 1查看 883关注 0票数 0

我正在使用OpenCvSharp和这段代码来获取用户眼睛的位置。

代码语言:javascript
复制
CvCapture cap = CvCapture.FromCamera(CaptureDevice.Any);
using (CvWindow w = new CvWindow("Eye Tracker"))
{

    while (CvWindow.WaitKey(10) < 0 && beginn) //beginn)
    {
        using (IplImage img = cap.QueryFrame())
        using (IplImage smallImg = new IplImage(new CvSize(Cv.Round(img.Width / Scale), Cv.Round(img.Height / Scale)), BitDepth.U8, 1))
        {

            using (IplImage gray = new IplImage(img.Size, BitDepth.U8, 1))
            {
                Cv.CvtColor(img, gray, ColorConversion.BgrToGray);
                Cv.Resize(gray, smallImg, Interpolation.Linear);
                Cv.EqualizeHist(smallImg, smallImg);
            }

            using (CvHaarClassifierCascade cascade = CvHaarClassifierCascade.FromFile(@"D:\haarcascade_eye.xml"))
            using (CvMemStorage storage = new CvMemStorage())
            {
                storage.Clear();
                CvSeq<CvAvgComp> eyes = Cv.HaarDetectObjects(smallImg, cascade, storage, ScaleFactor, MinNeighbors, 0, new CvSize(30, 30));
                if (eyes.Total == 2)
                {

                    // do something
                }
                w.Image = img;
            }
        }
    }
}

它是有效的,但是程序在内存中变得越来越大,直到它最后说它没有足够的内存,并指向

代码语言:javascript
复制
CvSeq<CvAvgComp> eyes = Cv.HaarDetectObjects(smallImg, cascade, storage, ScaleFactor, MinNeighbors, 0, new CvSize(30, 30));

如何解决这个内存不足的异常?

EN

回答 1

Stack Overflow用户

发布于 2015-05-06 22:21:18

当我看到你的帖子时,我也遇到了同样的问题,并且正在寻找解决方案。在我自己深入挖掘之后,我发现

代码语言:javascript
复制
GC.Collect()

在我的循环结束时,将释放被OpenCVSharp相机捕获消耗的内存。即使你已经解决了你的问题,也许这会帮助其他在谷歌搜索中跌跌撞撞的人。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29320220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档