# VB.NET ile Hareket Algılama
VB.NET'te hareket algılama için genellikle kamera kullanımı veya sensör verileri işlenir. İşte temel yaklaşımlar:
## 1. Webcam ile Temel Hareket Algılama
## 2. Basit Sensör Verisi ile Hareket Algılama (Accelerometer)
## Gerekli Kütüphaneler
1. Webcam örneği için:
- AForge.NET framework (Video ve görüntü işleme)
- NuGet'ten yükleyebilirsiniz: `Install-Package AForge.Video.DirectShow`
2. Sensör örneği için:
- Herhangi bir ek kütüphane gerekmez, temel VB.NET yeterlidir
## Gelişmiş Yöntemler
1. **OpenCV ile Hareket Algılama**:
- EmguCV (OpenCV'nin .NET wrapper'ı) kullanarak daha gelişmiş algoritmalar uygulanabilir
2. **Arka Plan Çıkarma**:
- Arka plan modelleme ile daha hassas hareket algılama
3. **Makine Öğrenimi**:
- TensorFlow.NET gibi kütüphanelerle özel hareket kalıpları tanıma
Önemli Not: Webcam örneğini çalıştırmak için form üzerinde bir `PictureBox` (adı pbCamera) ve bir `Label` (adı lblStatus) kontrolü olması gerekiyor.
VB.NET'te hareket algılama için genellikle kamera kullanımı veya sensör verileri işlenir. İşte temel yaklaşımlar:
## 1. Webcam ile Temel Hareket Algılama
C#:
Imports AForge.Video
Imports AForge.Video.DirectShow
Imports AForge.Imaging
Imports AForge.Imaging.Filters
Public Class MotionDetectionForm
Private videoSource As VideoCaptureDevice
Private previousFrame As Bitmap
Private motionDetected As Boolean = False
Private Sub StartCamera()
Dim videoDevices As New FilterInfoCollection(FilterCategory.VideoInputDevice)
videoSource = New VideoCaptureDevice(videoDevices(0).MonikerString)
AddHandler videoSource.NewFrame, AddressOf video_NewFrame
videoSource.Start()
End Sub
Private Sub video_NewFrame(sender As Object, eventArgs As NewFrameEventArgs)
Dim currentFrame As Bitmap = DirectCast(eventArgs.Frame.Clone(), Bitmap)
If previousFrame IsNot Nothing Then
' Farkları hesapla
Dim difference As New Difference()
difference.OverlayImage = previousFrame
Dim diffImage As Bitmap = difference.Apply(currentFrame)
' Eşikleme uygula
Dim threshold As New Threshold(15)
Dim thresholdImage As Bitmap = threshold.Apply(diffImage)
' Hareket alanlarını say
Dim blobCounter As New BlobCounter()
blobCounter.ProcessImage(thresholdImage)
Dim blobs As Rectangle() = blobCounter.GetObjectsRectangles()
motionDetected = (blobs.Length > 0)
' Görselleştirme
Dim g As Graphics = Graphics.FromImage(currentFrame)
For Each blob As Rectangle In blobs
g.DrawRectangle(Pens.Red, blob)
Next
' UI güncelleme
Me.Invoke(Sub()
pbCamera.Image = currentFrame
lblStatus.Text = If(motionDetected, "Hareket Algılandı!", "Hareket Yok")
lblStatus.BackColor = If(motionDetected, Color.Red, Color.Green)
End Sub)
End If
previousFrame = currentFrame
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
StartCamera()
End Sub
Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
If videoSource IsNot Nothing AndAlso videoSource.IsRunning Then
videoSource.SignalToStop()
videoSource.WaitForStop()
End If
End Sub
End Class
## 2. Basit Sensör Verisi ile Hareket Algılama (Accelerometer)
C#:
Public Class SensorMotionDetection
Private previousAcceleration As Double = 0
Private Const MOTION_THRESHOLD As Double = 1.5 ' Hassasiyet ayarı
Public Sub ProcessAccelerometerData(x As Double, y As Double, z As Double)
Dim currentAcceleration As Double = Math.Sqrt(x*x + y*y + z*z)
Dim delta As Double = Math.Abs(currentAcceleration - previousAcceleration)
If delta > MOTION_THRESHOLD Then
OnMotionDetected()
End If
previousAcceleration = currentAcceleration
End Sub
Private Sub OnMotionDetected()
' Hareket algılandığında yapılacak işlemler
Console.WriteLine("Hareket algılandı!")
' Veya event tetikleme
RaiseEvent MotionDetected(Me, EventArgs.Empty)
End Sub
Public Event MotionDetected As EventHandler
End Class
1. Webcam örneği için:
- AForge.NET framework (Video ve görüntü işleme)
- NuGet'ten yükleyebilirsiniz: `Install-Package AForge.Video.DirectShow`
2. Sensör örneği için:
- Herhangi bir ek kütüphane gerekmez, temel VB.NET yeterlidir
## Gelişmiş Yöntemler
1. **OpenCV ile Hareket Algılama**:
- EmguCV (OpenCV'nin .NET wrapper'ı) kullanarak daha gelişmiş algoritmalar uygulanabilir
2. **Arka Plan Çıkarma**:
- Arka plan modelleme ile daha hassas hareket algılama
3. **Makine Öğrenimi**:
- TensorFlow.NET gibi kütüphanelerle özel hareket kalıpları tanıma
Önemli Not: Webcam örneğini çalıştırmak için form üzerinde bir `PictureBox` (adı pbCamera) ve bir `Label` (adı lblStatus) kontrolü olması gerekiyor.