VB.NET ile Hareket Algılama

Forum Altay

Forum Yöneticisi
FA ÜYESİ
Premium Üye
Yazılım Ekibi
Puanları 3
Çözümler 0
Katılım
3 May 2025
Mesajlar
18
Beğeniler
2
Forum Altay
# 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

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
## 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.
 
Sitemiz bir forum sitesi olduğu için kullanıcılar her türlü görüşlerini önceden onay olmadan anında siteye yazabilmektedir. 5651 sayılı yasaya göre bu yazılardan dolayı doğabilecek her türlü sorumluluk yazan kullanıcılara aittir. 5651 sayılı yasaya göre sitemiz mesajları kontrolle yükümlü olmayıp, yasaya aykırı yada telif hakkı içeren paylaşımlar BURADAN bize ulaşıldığı taktirde, ilgili konu en geç 48 saat içerisinde kaldırılacaktır. Sitemizde Bulunan Videolar YouTube, Facebook, Dailymotion, v.b. video paylaşım sitelerinden alınmaktadır. Telif hakları sorumluluğu bu sitelere aittir. Videoların hiç biri sunucularımızda bulunmamaktadır.
  • Geri
    Üst