我正在使用OpenCvSharp和这段代码来获取用户眼睛的位置。
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;
}
}
}
}它是有效的,但是程序在内存中变得越来越大,直到它最后说它没有足够的内存,并指向
CvSeq<CvAvgComp> eyes = Cv.HaarDetectObjects(smallImg, cascade, storage, ScaleFactor, MinNeighbors, 0, new CvSize(30, 30));如何解决这个内存不足的异常?
发布于 2015-05-06 22:21:18
当我看到你的帖子时,我也遇到了同样的问题,并且正在寻找解决方案。在我自己深入挖掘之后,我发现
GC.Collect()在我的循环结束时,将释放被OpenCVSharp相机捕获消耗的内存。即使你已经解决了你的问题,也许这会帮助其他在谷歌搜索中跌跌撞撞的人。
https://stackoverflow.com/questions/29320220
复制相似问题