【发布时间】:2019-11-07 17:23:24
【问题描述】:
编辑:Motion Detection 我相信这可能会回答我的问题...
我不仅想检测运动,还想读取帧中运动发生的位置。 MotionDetector 中似乎没有任何关于其位置的信息。我想也许我可以通过MotionDetector 运行它,然后提取最大的 blob,但这似乎也不起作用。它只拾取一个 blob。
视频剪辑是一辆驶下坡道的车辆。 mainPBX 是原始帧,main2PBX 是修改后的帧(最大的 blob 被覆盖)。我的想法是读取 blob 何时由小变大(反之亦然),以确定进入或离开。
Private Sub Processor()
Dim bc As New BlobCounter With {
.MinWidth = 5,
.MinHeight = 5,
.ObjectsOrder = ObjectsOrder.Size
}
Dim detector As New MotionDetector(New SimpleBackgroundModelingDetector, New MotionAreaHighlighting)
Using reader As New AForge.Video.FFMPEG.VideoFileReader()
reader.Open("C:\Videos\MyVideo.mp4")
For i As Integer = 0 To reader.FrameCount - 1
Dim frame = reader.ReadVideoFrame()
Dim frame2 As Bitmap = frame.Clone()
Dim frame3 As Bitmap = frame.Clone()
detector.ProcessFrame(frame2)
bc.ProcessImage(frame2)
Dim blobs = bc.GetObjectsInformation()
If blobs.Length > 0 Then
bc.ExtractBlobsImage(frame3, blobs(0), True)
PBX_Image(main2PBX, frame3.Clone())
End If
PBX_Image(mainPBX, frame.Clone())
Threading.Thread.Sleep(25)
frame.Dispose()
frame2.Dispose()
frame3.Dispose()
Next
End Using
End Sub
【问题讨论】:
标签: aforge