AForge.NET WebCam快照内存消耗

时间:2013-01-16 21:46:47

标签: .net vb.net memory-management aforge

我对框架和我的应用程序的内存消耗有疑问。我做了一个应用程序,不时从我的WebCam拍摄快照,因为我的WebCam不支持快照功能,我必须创建一个新的帧事件,并最终捕获并保存一帧。当前帧速率为5 FPS,内存消耗稳定,但 ~11MB 。它是否足够好或者有什么方法可以减少内存使用量?

这是我的代码:

Imports AForge.Video
Imports AForge.Video.DirectShow
Imports System.Drawing.Imaging

Public Class Form1
    Dim VideoCaptureDevices As FilterInfoCollection
    Dim FinalVideo As VideoCaptureDevice
    Dim save As Boolean = False
    Dim Username As String = Environment.UserName
    Dim counter As Integer
    Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
        If FinalVideo.IsRunning Then
            FinalVideo.SignalToStop()
        End If
    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Timer1.Interval = 5000
        Timer1.Start()
        VideoCaptureDevices = New FilterInfoCollection(FilterCategory.VideoInputDevice)
        If VideoCaptureDevices.Count Then
            FinalVideo = New VideoCaptureDevice(VideoCaptureDevices(0).MonikerString)
            AddHandler FinalVideo.NewFrame, AddressOf Me.video_NewFrame
            FinalVideo.Start()
            FinalVideo.DesiredFrameRate = 5
        Else
            MsgBox("No video input found")
        End If
    End Sub

    Private Sub video_NewFrame(ByVal sender As Object, ByVal eventArgs As NewFrameEventArgs)

        Dim image As Bitmap = DirectCast(eventArgs.Frame.Clone(), Bitmap)
        Dim g As Graphics = Graphics.FromImage(image)
        If save Then
            counter += 1
            image.Save("C:\Users\" & Username & "\Desktop\" & counter & ".jpeg", ImageFormat.Jpeg)
            save = False
        End If
        g.Dispose()
        image.Dispose()

    End Sub

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        save = True
    End Sub


End Class

0 个答案:

没有答案