emgu を使用してカメラ キャプチャする C# のコードは次のとおりです。
//video capture
private Capture videoCapture = null; //takes images from camera as image frames
private Image<Bgr, Byte> videoCaptureImageFrame;
private Image<Bgr, Byte> videoCaptureResizedFrame;
//video capture
private void ProcessFrame(object sender, EventArgs arg)
{
try
{
videoCaptureImageFrame = videoCapture.QueryFrame().ToImage<Bgr, Byte>();
if (videoCaptureImageFrame != null)
{
videoCaptureResizedFrame = videoCaptureImageFrame.Resize(960, 540, Emgu.CV.CvEnum.Inter.Cubic);
VideoCapturePictureBox.Image = videoCaptureResizedFrame.ToBitmap();
}
}
catch (Exception ex)
{
MessageBox.Show("Video capture error #1: " + ex.Message.ToString());
}
}
public void VideoCaptureReleaseData()
{
if (videoCapture != null)
videoCapture.Dispose();
}
//video capture
private void MainForm_Load(object sender, EventArgs e)
{
//Dispose of Capture if it was created before
if (videoCapture != null) videoCapture.Dispose();
//video capture
if (videoCapture == null)
{
try
{
videoCapture = new Capture(0);
videoCapture.SetCaptureProperty(Emgu.CV.CvEnum.CapProp.FrameWidth, 1920);
videoCapture.SetCaptureProperty(Emgu.CV.CvEnum.CapProp.FrameHeight, 1080);
videoCapture.SetCaptureProperty(Emgu.CV.CvEnum.CapProp.FrameCount, 25);
Application.Idle += ProcessFrame;
}
catch (NullReferenceException excpt)
{
MessageBox.Show("Video capture error #2: " + excpt.Message);
}
}
//video capture
}
このコードは正常に動作しますが、Visual Studio 2015 で 2 GB のデータのプロセス メモリ消費が時々表示されることがわかります。
「ビデオ キャプチャ エラー #1: opencv: u != 0」というエラーが発生し
、アプリケーションが停止してカメラ出力が表示されないことがあります。
上記のコードで何らかのメモリリークが発生していると思います。
チュートリアルに従ってこのコードを書いたので、これは奇妙です。
このコードの何が問題なのか教えてください。