vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Video WebCam Einzelbild in array und in picturebox 
Autor: Bastel-601
Datum: 11.06.07 21:09

Hallo,
ich habe mich seit einigen Tagen mit dem Tutorial dieser Webseite zum anzeigen einer Webcam in einer Picturebox beschäftigt:

http://www.vbarchiv.net/archiv/tipp_744.html

Das Video wird wie folgt in einer Picturebox angezeigt:
videoHandle = CreateCaptureWindow(picture1.hWnd, 0, 0, videoWidth, videoHeight, _
  0)
Wenn ich den Inhalt der Picturebox (picture1) in der das Video der Webcam angezeigt wird in eine andere Picturebox kopiere, dann ist dieser leer. picture2.picture = picture1.picture.

Um ein Bild aus einer Picturebox auszulesen und in einem Bytearray zu speichern benutze ich foglende Funktion. Diese Funktioniert aber nur mit einem Bild das über picture.picture ansprechabr ist. Nicht direkt mit dem Videohandle der Webcam.
Function ReadData(pic As IPicture, abp As asmBmpPara, src() As Byte, tgt() As _
  Byte, Optional pmd As Boolean = True, Optional eMD As Boolean = True) As _
  Boolean
 
    ' infos über das einzulesende Bild
    Dim bmp   As BITMAP
 
    ' erweiterte infos über das einzulesende Bild
    Dim bmi   As BITMAPINFO
 
    ' Gerätekontext-Handle
    Dim hdc   As Long
 
    ' Zeiger auf die binären Bilddaten
    Dim ptr   As Long
    Dim tmp   As Long
 
    ' Einlesen der Bitmapinfos
    If GetObject(pic.Handle, Len(bmp), bmp) = 0 Then
        If eMD Then MsgBox "Bildinformationen konnten nicht gelesen werden"
 
    ElseIf pmd = True And bmp.bmBits <> 0 And bmp.bmBitsPixel = 32 Then
 
        ' wenn die Daten im richtigen Format vorliegen, diesen Pointer nehmen
        ptr = bmp.bmBits
 
    Else
 
        ' sonst per GDI-Funktion konvertieren lassen und im tgt-bArray() 
        ' speichern
        With bmi.bmiHeader
            .biSize = Len(bmi.bmiHeader)
            .biCompression = BI_RGB
            .biHeight = bmp.bmHeight
            .biWidth = bmp.bmWidth
            .biPlanes = 1
            .biBitCount = 32
            .biSizeImage = .biWidth * 4 * .biHeight
 
            ' Array neu dimensionieren
            ReDim tgt(1 To .biWidth * 4, 1 To .biHeight)
            hdc = GetDC(0)
 
            If hdc = 0 Then
                If eMD Then MsgBox "Gerätekontext konnte nicht erzeugt werden"
 
            ElseIf GetDIBits(hdc, pic.Handle, 0, .biHeight, tgt(1, 1), bmi, _
              DIB_RGB_COLORS) Then
 
                ptr = VarPtr(tgt(1, 1))
 
            Else
 
                ' bei Fehler: tgt-bArray wieder auf usrprüngliche Dimension 
                ' setzen
                ReDim tgt(1 To UBound(src, 1), 1 To UBound(src, 2))
                If eMD Then MsgBox "Bilddaten konnten nicht gelesen werden"
            End If
 
            ' gibt den Gerätekontext [DC] wieder frei, so daß andere 
            ' Anwendungen ihn wieder verwenden können
            If hdc Then ReleaseDC 0, hdc
        End With
    End If
 
    If ptr Then
        bmp.bmBitsPixel = 32
        bmp.bmWidthBytes = bmp.bmWidth * 4
        tmp = bmp.bmWidthBytes * bmp.bmHeight
 
        ' src-bArray dimensionieren und mit Bilddaten füllen
        ReDim src(1 To bmp.bmWidthBytes, 1 To bmp.bmHeight)
        ' Kopiert an die Position der Zieladresse die mit der Adresse 
        ' identifizierte Quelle
        ' Der drite Parameter gibt die Anzahl der bytes an die kopiert werden
        CopyMemory src(1, 1), ByVal ptr, tmp
 
        'asmBmpPara-Struktur setzen
        abp.src = bmp
        abp.src.bmBits = VarPtr(src(1, 1))
 
        abp.tgt = bmp
        abp.tgt.bmBits = ptr
 
        ReadData = True
    End If
End Function
Wie bekomme ich das Bild in das Array ohne es zuvor in eine Picturebox (picture2) zu kopieren.
Wie kann ich das Array in eine ganz normale picturebox zurück schreiben?


Bitte helft mir, ich hab mir daran schon die Zähne ausgebissen.
Wenn ich den ganzen Code posten soll, dann sagt bescheid
Gruß Bastel
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Video WebCam Einzelbild in array und in picturebox2.889Bastel-60111.06.07 21:09
Re: Video WebCam Einzelbild in array und in picturebox1.158Bastel-60117.06.07 10:56

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel