USB oder TCP/IP Camera VB.Net

Zuviel Werbung?
-> Hier kostenlos registrieren
@MasterOhh:
Also mit GetPixel und SetPixel habe ich bislang keine schlechten Erfahrungen gemacht. Ich habe sogar ein Control erstellt, dass auf diese Weise (schon im DesignMode) die Durchsichtigkeit einer Grafik ändert.
Du hast aber Recht - wenn die Grafik sehr groß ist dann wird das ggf. ein bißchen zäh ...

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,
ich wünsche euch erstmal allen frohe Weihnachten und besinnliche Weihnachtstage.

Meine Bildaufnahme und die Bildauswertung funktioniert ganz gut.
Mein nächstes Problem wo ich jetzt schon länger daran sitzte, in dem Bild wo ich aufgenommen und Umgewandelt habe, sind mehrere weiße Kreise,
von diesen Kreisen würde ich gerne den Mittelpunkt bestimmen und diesen dann in einer Variablen speichern.

Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
erst mal noch ein Frohes neues Jahr.

Ich habe mich mal etwas mit AForge beschäftigt und habe mal die Cam damit Programmiert.
Allerdings mache ich jetzt schon über einer Woche rum wo ich die Kreise auswertung probiere und es einfach nichts wird.
Man kann doch das AForge auch mit vb.net programmieren?
Die Beispiele sind ja alle in C# hab das auch mal damit Probiert aber irgendwie wird das alles nichts.

Code:
Imports System.IO
Imports System.Drawing.Image
Imports System.Runtime.InteropServices
Imports System.Drawing
Imports System.Drawing.Imaging

Imports AForge.Controls
Imports AForge.Video
Imports AForge.Video.DirectShow
Imports AForge.Math.Geometry
Imports AForge.Imaging


Public Class Form1

    Dim VideoCaptureSource As VideoCaptureDevice
    Dim VideoDevices As New FilterInfoCollection(FilterCategory.VideoInputDevice)

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim MySigleDevice As FilterInfo

        If VideoDevices.Count = 0 Then
            boxCam.Items.Add("Keine WebCams")
        Else
            For Each MySigleDevice In VideoDevices
                boxCam.Items.Add(MySigleDevice.Name)
            Next
        End If
        boxCam.SelectedIndex = 0
    End Sub

    Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
        VideoSourcePlayer1.SignalToStop()
        VideoSourcePlayer1.WaitForStop()
        VideoDevices = Nothing
        VideoCaptureSource = Nothing
    End Sub

    Private Sub btnStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStart.Click
        VideoCaptureSource = New VideoCaptureDevice(VideoDevices(boxCam.SelectedIndex).MonikerString)
        VideoSourcePlayer1.VideoSource = VideoCaptureSource
        VideoSourcePlayer1.Start()
    End Sub
Gruß
 
Hallo!
Auch ein schönes neues Jahr!

Die Beschreibung "funktioniert alles nicht" is jetz nicht gerade aussagekräftig.

Ob VB oder C# is egal...

Findet dein Code die Kamera? Wo ist der Code wo gesucht wird? Was macht das Program? Was macht es nicht? Hast Du schon per Einzelschritt geschaut was passiert?

Gruse Wolfgang
 
Hallo

es funktioniert alles so weit, er findet die Camaras und bekomme auch ein Bild
und kann schon ein „Schnappschuss“ machen.
Nur das mit der Bildauswertung bezüglich der Kreise funktioniert nicht.

Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo!
Na das ist doch schon mal ein Anfang. Dann weisst Du ja was nicht funktioniert. Hast Du schon mal einzelschritt gemacht und geschaut was fas programm macht oder nicht macht? Hast du das Bild schon mal in der Demosoftware von Aforge analysieren lassen? Wo liegt der unterschied zu deinem programm?
Gruss
 
Hallo
die Kreis erknnung funktioniert jetzt endlich, war wie meisten nur ein kleiner Fehler.
Also die Bildauswertung funktioniert jetzt soweit ganz gut.

Jetzt hätte ich da noch eine andere Frage und zwar wegen der Camera auswahl.
Kann ich die in VB schon fest vorschreiben das ich da keine mehr auswählen muss?
Habe da zwei gleich Cameras, über USB, am Laptop.

Grus
 
Schau dir mal die MonikerString Eigenschaft der FilterInfo Klasse an. So ganz eindeutig lassen sich damit wohl die Kamera auch nicht unterscheiden (abhängig vom USB Port und ob die Kameras von der gleichen Marke sind). Aber vieleicht haut das bei dir hin. Geht natürlich am besten, wenn du nicht ständig Kameras umstöpselst.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo

danke funktioniert super.
Habe jetzt zwei gleiche Kameras angeschlossen und funktioniert ganz gut.
Man darft halt wirklich nicht die Kameras umstöpseln sonst werden die Bilder vertauscht.

Hab noch eine Auswahl dazugemacht welche man auswählen will.

Hier mal den Code
Code:
Imports AForge.Video.DirectShow

'Variablen für Cameras
    Private WithEvents CamFlaeche As VideoCaptureDevice
    Private WithEvents CamRand As VideoCaptureDevice

Private Sub btnCam_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCam.Click
        CamFlaeche = getVideoCaptureDevice(2)
        CamRand = getVideoCaptureDevice(1)

        If CheckBox8.Checked Then
            If VideoSourcePlayer1.IsRunning Then
                VideoSourcePlayer1.Stop()
            End If

            VideoSourcePlayer1.VideoSource = CamFlaeche
            VideoSourcePlayer1.Start()
        End If

        If CheckBox9.Checked Then
            If VideoSourcePlayer2.IsRunning Then
                VideoSourcePlayer2.Stop()
            End If
            VideoSourcePlayer2.VideoSource = CamRand
            VideoSourcePlayer2.Start()
        End If

        If Not CheckBox8.Checked And Not CheckBox9.Checked Then
            MsgBox("Cam auswählen")
        End If

        If VideoSourcePlayer1.IsRunning And Not CheckBox8.Checked Then
            VideoSourcePlayer1.Stop()
        End If

        If VideoSourcePlayer2.IsRunning And Not CheckBox9.Checked Then
            VideoSourcePlayer2.Stop()
        End If

    End Sub

  Private Function getVideoCaptureDevice(ByRef x As Integer) As VideoCaptureDevice
        Dim Cams As New FilterInfoCollection(FilterCategory.VideoInputDevice) 'Alle Geräte ermitteln
        Return New VideoCaptureDevice(Cams(x).MonikerString) 'Entsprechendes Gerät auswählen
    End Function
 
Hallo
es ist zwar schon etwas älter aber ich habe da jetzt noch ein Problem.
Habe es jetzt in VB 2008 Programmiert und bekomme da dann eine Video was Stopped angezeigt.
Woran kann das liegen?
 
Hi!

Wo zeigt was video stopped an?

Und warum programmierst du mit so altem zeug?
Nimm VisualStudio 2015 Community... Is auch kostenlos und hat fast den Umfang von Peofessional...

Gruss
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
Das bekomme ich im Video Player angezeigt, arbeite mit aforge Bibliothek.
Mach gerade mein Abschlussprojekt für meinen Techniker und da habe ich auf der Ipc (soft-sps) nur beschränk Platz (ca. 1 GB freier Platz) bei vb 2010 reicht der Platz nicht mehr.
 
Naja... Irgendwoher muss das stop ja kommen... Schon debugausgaben eingefügt bzw geschaut was vor dem stop passiert? Mal mit Breakpoints durchgrtippt?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hat jemand noch eine Idee?

Lade am Anfang die "Aforg.Video" Bib ein.

Code:
Private Sub btnCamStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCamStart.Click
        CamFlaeche = getVideoCaptureDevice(0)
        MsgBox("q") 'Test Msgbox steht noch nichts in dem Video Player
        VideoSourcePlayer1.VideoSource = CamFlaeche
        MsgBox("w") 'Test Msgbox steht Connecting in dem Video Player
        VideoSourcePlayer1.Start()
        MsgBox("r") 'Test Msgbox steht Video was stopped in dem Video Player    
    End Sub

    Private Sub btnCamStop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCamStop.Click
        VideoSourcePlayer1.Stop()
    End Sub

    Private Function getVideoCaptureDevice(ByRef x As Integer) As VideoCaptureDevice
        Dim Cam As New FilterInfoCollection(FilterCategory.VideoInputDevice) 'Alle Geräte suchen
        Return New VideoCaptureDevice(Cam(x).MonikerString) 'Entsprechendes Gerät zuweisen
    End Function
 
Hi!
Keine ahnung was da passiert. Aber wozu sind die msgboxen? Setz doch einen haltepunkt mit f9.
In der dritten sub übergibst du irgendwas auf x. Wo kommt das her? Steht da was drin? Das videodevice wird aber nich auf x zugewiesen... Zumindest für mich nicht sichtba.
Und ja... Eine genaue beschreibung was geht und was nicht geht und wo es probleme gibt
wäre nicht schlecht.

Hast du schon mal mit einem beispielprogramm mit dem es funktioniert geschaut warum es dort geht und bei dir nicht?

Gruss
 
Hallo,
die msgboxen waren so etwas ähnliches wie die haltepunkte, habe das jetzt auch umgeändert.

Ich kann mein Programm starten, wenn ich dann die Kamera, mit dem Button CamStart, anschalten will kommt in dem Videoplayer Connecting... und bleibt da stehen.
Das programm läuft normal weiter, wenn ich eine msgbox hinten dran mache kommt die auch.
Habe das Programm schon auf einem anderen PC probiert da läuft es, der einzigste unterschied ich habe auf dem anderen PC wo es läuft vb2010 und auf dem anderen vb2008 wo es nicht läuft wegen Platz mangel (Platz kleiner 1GB), habe die selben Kameras, treiber sind alle ordnungs gemäß Installiert und im Gerätemanager ist alles auf grün.
Funktionieren die AForge Bibliotheken in VB2008?
Hier nochmal mein ganzer Code.
Code:
Imports AForge.Video
Imports AForge.Video.DirectShow


Public Class Cams
    Private WithEvents CamFlaeche As VideoCaptureDevice


    Private Sub btnCamStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCamStart.Click
        'Alle Kameras suchen und Kamera auf dem Index 0 auf CamFlaeche zuweisen
        CamFlaeche = getVideoCaptureDevice(0)
        'Kamera auf Index 0 auf den VideoSourcePlayer1 zuweisen
        VideoSourcePlayer1.VideoSource = CamFlaeche
        VideoSourcePlayer1.Start()

    End Sub

    Private Sub btnCamStop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCamStop.Click
        VideoSourcePlayer1.Stop()
    End Sub

    Private Function getVideoCaptureDevice(ByRef Kameranummer As Integer) As VideoCaptureDevice
        'Alle Geräte suchen
        Dim Cam As New FilterInfoCollection(FilterCategory.VideoInputDevice)
        'Entsprechendes Gerät zuweisen
        Return New VideoCaptureDevice(Cam(Kameranummer).MonikerString)
    End Function

    Private Sub Cams_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
        VideoSourcePlayer1.Stop()
    End Sub
End Class
 
Zurück
Oben