-
        

Ergebnis 1 bis 3 von 3

Thema: Vb.net Webcam abfragen und Farben auslesen

  1. #1

    Vb.net Webcam abfragen und Farben auslesen

    Anzeige

    Moin Moin

    ich habe mir einen code besorfgt um meine webcam mit vb.net abzufragen .
    Das klappt auch wunderbar(api32.dll)

    nun möchte ich Per click bilder davon abspeichern und farben erkennen oder
    Pixel auslesen.
    Ich habe gegoogelt und gesucht.
    Ich bekomme es nicht hin. her der VB.net code




    Option Explicit On
    Option Strict On

    Public Class Form1
    Dim wort As String
    Private w32 As Win32Api
    Private Shadows [Handle] As IntPtr
    Dim Bild As Bitmap
    Dim number2str As String
    Dim number As Integer
    Dim x As Integer
    Dim y As Integer






    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
    Handles Button1.Click
    w32 = New Win32Api(Me.picturebox1.Handle, 704, 574)
    [Handle] = w32.GetCaptureHandle
    Me.Button1.Enabled = False


    End Sub

    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) _
    Handles Me.FormClosing
    If Not [Handle].Equals(IntPtr.Zero) Then
    w32.DisposeConnection([Handle])
    End If
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
    Handles Button2.Click
    If Not [Handle].Equals(IntPtr.Zero) Then
    w32.DisposeConnection([Handle])
    Me.Button1.Enabled = True
    End If
    End Sub

    Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles picturebox1.Click



    End Sub


    Public Class Win32Api

    #Region "Api Functions"

    Private Declare Auto Function capCreateCaptureWindow Lib "avicap32.dll" ( _
    ByVal lpszWindowName As String, _
    ByVal dwStyle As Integer, _
    ByVal x As Integer, _
    ByVal y As Integer, _
    ByVal nWidth As Integer, _
    ByVal nHeight As Integer, _
    ByVal hWnd As IntPtr, _
    ByVal nID As Integer) _
    As IntPtr


    Private Declare Auto Function SendMessage Lib "user32.dll" ( _
    ByVal hwnd As IntPtr, _
    ByVal uMsg As Integer, _
    ByVal wParam As Integer, _
    ByVal lParam As Integer) _
    As Integer

    #End Region

    #Region "Constants"

    Private Const WM_USER As Int32 = &H400
    Private Const WS_CHILD As Integer = &H40000000
    Private Const WS_VISIBLE As Integer = &H10000000
    Private Const WM_CAP_START As Integer = WM_USER
    Private Const WM_CAP_DRIVER_CONNECT As Integer = (WM_CAP_START + 10)
    Private Const WM_CAP_SET_PREVIEWRATE As Integer = (WM_CAP_START + 52)
    Private Const WM_CAP_SET_OVERLAY As Integer = (WM_CAP_START + 51)
    Private Const WM_CAP_SET_PREVIEW As Integer = (WM_CAP_START + 50)
    Private Const WM_CAP_DRIVER_DISCONNECT As Integer = (WM_CAP_START + 11)

    #End Region

    #Region "Private"

    Private _hwnd As IntPtr
    Private _width As Integer
    Private _height As Integer

    #End Region

    #Region "Camera Id"

    Private Const CameraId As Integer = 0

    #End Region

    #Region "Frames"

    Private Const Frames As Integer = 24

    #End Region

    #Region "Positions"

    Private x As Integer = 0
    Private y As Integer = 0

    #End Region

    #Region "Constructor"

    Public Sub New(ByVal hWnd As IntPtr, ByVal Width As Integer, ByVal Height As Integer)
    If Not hWnd.Equals(IntPtr.Zero) Then
    Me._hwnd = hWnd
    If (Width >= 640) And (Height >= 480) Then
    Me._width = Width : Me._height = Height
    Else
    Return
    End If
    Else
    Return
    End If
    End Sub

    #End Region

    #Region "Functions"

    Public Function GetCaptureHandle() As IntPtr
    Dim [Handle] As IntPtr = Win32Api.capCreateCaptureWindow("CaptureWindow", _
    Win32Api.WS_CHILD + Win32Api.WS_VISIBLE, _
    x, y, _
    Me._width, Me._height, _
    Me._hwnd, _
    Win32Api.CameraId)
    SendMessage([Handle], Win32Api.WM_CAP_DRIVER_CONNECT, Win32Api.CameraId, 0)
    SendMessage([Handle], Win32Api.WM_CAP_SET_PREVIEWRATE, Win32Api.Frames, 0)
    SendMessage([Handle], Win32Api.WM_CAP_SET_OVERLAY, 1, 0)
    SendMessage([Handle], Win32Api.WM_CAP_SET_PREVIEW, 1, 0)
    If Not [Handle].Equals(IntPtr.Zero) Then
    Return [Handle]
    Else
    Return IntPtr.Zero
    End If
    End Function

    Public Sub DisposeConnection(ByVal [Handle] As IntPtr)
    Dim result As Integer = SendMessage([Handle], Win32Api.WM_CAP_DRIVER_DISCONNECT, Win32Api.CameraId, 0)
    Debug.WriteLine("Disconnected: " & result.ToString())
    End Sub

    #End Region

    End Class





    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click


    End Sub


    End Class


    vieleicht kann mir jemand helfen

    danke
    Micha

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    22.06.2009
    Beiträge
    1.265
    Vllt solltest du erstmal den Code kommentieren bevor du ihn in eine Forum postest und vllt auch erst nur den relevanten Teile (der der nämlich nicht funzt)
    Wenn du allerdings schon .Net verwendest kannst du auch gleich eine fertige library für webcam zugriffe verwenden.
    z.B. https://code.google.com/p/aforge/
    http://code-bude.net/2011/06/02/webc...zen-in-csharp/
    Der Code ist zwar in C#, aber das Prinzip ist auch bei vb.net das selbe.

    alternativ kannst du auch
    http://www.metricam.net/
    verwenden mit dem du sogar eine Kinect auslesen kannst

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied Avatar von arnoa
    Registriert seit
    03.01.2011
    Ort
    Wien
    Beiträge
    146
    Hallo Micha!

    Ich verwende für die Bildbearbeitung bzw. Auswertung (Schwerpunkt Wegerkennung) EmguCV (OpenCV) und wie von shedepe schon erwähnt AForge. Sind alles sehr mächtige Werkzeuge welche dich bei deiner Aufgabe bestens unterstützen können!

    Was ist das Ziel deiner Auswertung? Ev. kannst deine Aufgabenstellung mal ein wenig beschreiben?!
    ____________________________________________
    Mehr Infos zu meinem Projekt unter: http://www.aurob.com

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 19.12.2007, 08:21
  2. K8055 Eingänge abfragen und einen Zähler hoch zählen? VB.net
    Von rampage78 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 18.12.2007, 23:01
  3. Webcam Auslesen mit Delphi
    Von dutschman im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 8
    Letzter Beitrag: 27.07.2006, 16:50
  4. Logitech - Sphere - WebCam-Daten auslesen
    Von PhyCK im Forum Sensoren / Sensorik
    Antworten: 2
    Letzter Beitrag: 24.03.2005, 15:24
  5. [ERLEDIGT] Joystick auslesen in VB.NET
    Von Joystick im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 7
    Letzter Beitrag: 02.01.2005, 16:39

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •