[英]Is Emgu CV QueryFrame method asynchronous?
我目前正在使用EmguCV QueryFrame
方法捕获帧。 代码在我的processFrame
方法中是这样的:
using(Image<Bgr, Byte> imgOriginal = _capture.QueryFrame()){
if(imgOriginal == null) return;
using(Image<Gray, Byte> grayImg = imgOriginal.Convert<Gray, Byte>()){
//some stuff with grayImg
}
}
我面临的问题是我不断收到OutOfMemory
异常。 通过对MemProfiler
进一步检查,我发现名称空间System
的Byte[,,]
对象使用的内存成倍增加。 我能想到的唯一的Byte[,,]
是捕获的Bgr
帧imgOriginal
。
这使我相信,即使using块中的代码尚未完成执行, Capture
对象仍会继续查询新帧。 这是真的? 还是还有其他原因? 有什么办法解决这个问题?
任何帮助,将不胜感激。 谢谢。
您正在使用哪个版本的EMGU?
尝试这个:
Mat frame = new Mat();
_capture.Retrieve(frame, 0);
转换为灰度:
Mat grayFrame = new Mat();
CvInvoke.CvtColor(frame, grayFrame, ColorConversion.Bgr2Gray);
另外,您可以尝试在EMGU的示例部分中检查其工作方式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.