Webcam Aufnahme direkt speichern [VB.NET]

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Radinator.

    Webcam Aufnahme direkt speichern [VB.NET]

    Guten Tag allerseits, ^^
    ich versuche bereits seit einigen Tagen vergeblich, ein Programm in VB.NET zu realisieren, welches beim Klicken auf einen Button ein Foto mit einer angeschlossenen Webcam aufnimmt und in einem definierten Verzeichnis abspeichert. :S
    Ich habe bereits in zahlreichen Foren (u. a. vb-paradise) zu diesem Thema recherchiert, jedoch möchte ich mein Vorhaben NICHT über eine als Vorschaufenster dienende PictureBox abwickeln oder von der Zwischenablage gebrauch machen, sondern direkt eine einzige Momentaufnahme der Webcam abgreifen und abspeichern. :D

    Ich würde mich sehr darüber freuen, wenn sich jemand der Sache annehmen würde und mit einem passenden Code antwortet! ^^ :)

    Vielen Dank und Liebe Grüße,
    der Mythomane.

    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Mythomane schrieb:


    Ich würde mich sehr darüber freuen, wenn sich jemand der Sache annehmen würde und mit einem passenden Code antwortet! ^^ :)


    Wir sind hier nicht bei wünsch dir was sonst könnte ja jeder programm hersteller in ein Programmierungsforum gehen und sagen hey ich will das und das programm gebt mir mal den code dafür glaubst du
    hier haben alle endlos zeit und nichts besseres zu tun?

    Wenn du keine eigenen ansätze zeigst in denen du präsentierst was du schon erreicht hast wird dir hier keiner helfen das ist die kategorie helfen bei problemen,
    und nicht hey ich schreib dir den code und du lehnst dich zurück.

    Dann must du dir einen Programmierer suchen und bezahlen.

    Freundlichen gruß


    Und das du google genutzt hast glaube ich auch nicht sonst hättest du das hier gefunden stand an oberster stelle von Google

    Kann mir jemand helfen einen Bild von Webcam aufnehmen?
    Also erstens hat mein Vorposter recht, aber ich will ja mal nicht so sein:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class WebCam
    2. Const WM_CAP_START = &H400S
    3. Const WS_CHILD = &H40000000
    4. Const WS_VISIBLE = &H10000000
    5. Const WM_CAP_DRIVER_CONNECT = WM_CAP_START + 10
    6. Const WM_CAP_DRIVER_DISCONNECT = WM_CAP_START + 11
    7. Const WM_CAP_SEQUENCE = WM_CAP_START + 62
    8. Const WM_CAP_FILE_SAVEAS = WM_CAP_START + 23
    9. Const WM_CAP_SAVEDIB = WM_CAP_START + 25
    10. Const WM_CAP_GRAB_FRAME_NOSTOP = WM_CAP_START + 61
    11. Const WM_CAP_SET_CALLBACK_FRAME = WM_CAP_START + 5
    12. Const WM_CAP_GRAB_FRAME = WM_CAP_START + 60
    13. Const WM_CAP_EDIT_COPY As Short = WM_CAP_START + 30
    14. Const WM_CAP_SET_PREVIEWRATE As Short = WM_CAP_START + 52
    15. Const WM_CAP_SET_OVERLAY As Short = WM_CAP_START + 51
    16. Const WM_CAP_SET_PREVIEW As Short = WM_CAP_START + 50
    17. Declare Function capGetDriverDescriptionA Lib "avicap32.dll" (ByVal wDriverIndex As Short, ByVal lpszName As String, ByVal cbName As Integer, ByVal lpszVer As String, ByVal cbVer As Integer) As Boolean
    18. Declare Function capCreateCaptureWindowA 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 Short, ByVal hWnd As Integer, ByVal nID As Integer) As Integer
    19. Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Integer, ByVal Msg As Integer, ByVal wParam As Integer, <MarshalAs(UnmanagedType.AsAny)> ByVal lParam As Object) As Integer
    20. Private hWnd As Integer
    21. Private mypicture As New PictureBox
    22. Public Sub New(Optional ByVal PictureBox As PictureBox = Nothing)
    23. If PictureBox Is Nothing Then
    24. hWnd = capCreateCaptureWindowA("video", WS_CHILD, 0, 0, 0, 0, CInt(mypicture.Handle), 0)
    25. SendMessage(hWnd, WM_CAP_DRIVER_CONNECT, 0, 0)
    26. Else
    27. hWnd = capCreateCaptureWindowA("video", WS_CHILD + WS_VISIBLE, 0, 0, PictureBox.Width, CShort(PictureBox.Height), CInt(PictureBox.Handle), 1)
    28. SendMessage(hWnd, WM_CAP_DRIVER_CONNECT, 0, 0)
    29. SendMessage(hWnd, WM_CAP_SET_PREVIEWRATE, 1, 0)
    30. SendMessage(hWnd, WM_CAP_SET_OVERLAY, 1, 0)
    31. SendMessage(hWnd, WM_CAP_SET_PREVIEW, 1, 0)
    32. End If
    33. End Sub
    34. Public Sub StartRecording()
    35. SendMessage(hWnd, WM_CAP_SEQUENCE, 0, 0)
    36. End Sub
    37. Public Sub StopRecording(ByVal FileName As String)
    38. SendMessage(hWnd, WM_CAP_FILE_SAVEAS, 0, FileName)
    39. End Sub
    40. Public Function GetImage() As String
    41. SendMessage(hWnd, WM_CAP_GRAB_FRAME_NOSTOP, 0, 0)
    42. Dim tempFile As String = Path.Combine(Path.GetTempPath, "tempFile.dib")
    43. SendMessage(hWnd, WM_CAP_SAVEDIB, 0, tempFile)
    44. Return tempFile
    45. End Function
    46. Protected Sub Dispose()
    47. SendMessage(hWnd, WM_CAP_DRIVER_DISCONNECT, 0, 0)
    48. End Sub
    49. End Class​


    Die Klasse die ich dort geschrieben habe beinhaltet das was du haben möchtest (GetImage), musst es halt noch von dem anderen Zeug rausfiltern :)

    mfG Frank
    @Mythomane:

    Mythomane schrieb:

    Wir sind hier nicht bei wünsch dir was
    Heißt nur, dass du nicht einfach ankommen kannst, uns Vorhaben X schilderst und wir dir hier fertigen Code, den du nur noch per Copy und Paste in dein Projekt einfügen kannst, liefern werden.

    Ein Forum ist dazu meiner Meinung nach gedacht, um
    - Fragen zu beantworten, sprich: Anreize/Beispiele/Antworten liefern, wie du dein Vorhaben selbständig lösen kannst
    - Code zu verbessern/verbessern zu lassen (also seinen bisherigen Code zu teilen und Verbesserungsvorschläge einzubauen - sofern sinnvoll)
    - Soziale Interaktion zu ermöglichen (hochgestochene Aussage, meint aber unsere (@Markus: Ich erlaube mir hier einfach mal unser zu sagen) Unterforen, die sich unter Off-Topic verbergen

    Wenn du wie oben herkommst und von uns erwartest, dass wir, wie oben gesagt, kopierfertigen Quellcode liefern, bist du im falschen Abteil. Hierfür gibt es hier (Gott sei Dank) ein eigenes Unterforum. Hier kannst du Vorhaben X schildern und gegen Bezahlung/Gegeleistung bekommst du fertigen Code. Alles andere wäre wahnsinnig. Stell dir vor eine Firma wollte eine Anwendung realisieren, geht zu einer Softwareschmiede hin und die macht das kostenlos - wird in der Realität nie vorkommen.

    Lg Radinator
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell