フレームワークとアプリケーションのメモリ消費量について質問があります。WebCam はスナップショット機能をサポートしていないため、WebCam からスナップショットを時々取得するアプリケーションを作成しました。新しいフレーム イベントを作成し、最終的に 1 つのフレームをキャプチャして保存する必要がありました。現在のフレームレートは 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