【发布时间】:2019-04-07 12:54:27
【问题描述】:
以下代码是我在一个更大的项目中从网络摄像头检索帧的方法:
Imports Emgu.CV
Imports Emgu.CV.CvEnum
Imports Emgu.CV.Structure
Imports Emgu.CV.UI
Imports Emgu.CV.Util
Public Class Form1
Dim img As Mat
Dim cam As VideoCapture
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Try
cam = New VideoCapture(0)
Catch ex As Exception
'show error via message box
MessageBox.Show("unable To read from webcam, error: " + Environment.NewLine + Environment.NewLine +
ex.Message + Environment.NewLine + Environment.NewLine +
"Try another")
Return
End Try
AddHandler Application.Idle, New EventHandler(AddressOf Me.ProcessFrame)
End Sub
Sub ProcessFrame(sender As Object, arg As EventArgs)
img = cam.QueryFrame()
ImageBox1.Image = img
End Sub
End Class
基本上,它会从网络摄像头中抓取一帧并将其插入表单上的图像框。运行代码时,我的内存消耗如下所示:
https://i.imgur.com/PRGULG9.png
我从中收集到的信息是,有些东西没有得到妥善处理,但我不知道它是什么。网络摄像头的 MP 越多,内存峰值就越高。加载本地视频文件时也是如此。
【问题讨论】:
标签: vb.net opencv memory-leaks emgucv