Click here to Skip to main content
15,897,518 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
Thanks in advance . I have tried more solution but not in benificial for me.
Posted
Updated 24-Mar-16 9:32am

You can use the Touchless library. Found here: http://touchless.codeplex.com/[^] With this Class:
VB
Imports System.Net.Sockets
Imports System.Threading
Imports TouchlessLib

Public Class Form1

    'UDP Defines
    Dim subscriber As New UdpClient()
    Dim publisher As New UdpClient()
    Dim mycomputername As String = Environment.MachineName
    Dim mycomputerIP() As System.Net.IPAddress = System.Net.Dns.GetHostAddresses(mycomputername)

    'Webcam Defines
    Dim Touchless As New TouchlessLib.TouchlessMgr
    Dim Camera1 As TouchlessLib.Camera = Touchless.Cameras.ElementAt(0)
    Dim picsize As Size = New Size(160, 120)

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        publisher.Client.Blocking = False
        subscriber.Client.ReceiveTimeout = 100
        subscriber.Client.Blocking = False
        subscriber.ExclusiveAddressUse = False
        publisher.ExclusiveAddressUse = False
        TB_Host.Text = Environment.MachineName

        Label3.Text = "My Name: " & Environment.MachineName

        Touchless.CurrentCamera = Camera1
        Touchless.CurrentCamera.CaptureWidth = picsize.Width
        Touchless.CurrentCamera.CaptureHeight = picsize.Height

    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

        'Send
        Try

            Dim bitmapz As Bitmap = New Bitmap(picsize.Width, picsize.Height)
            bitmapz = Touchless.CurrentCamera.GetCurrentImage
            PictureBox1.Image = bitmapz

            Dim sendbytes() As Byte
            bytesfromimage(sendbytes, bitmapz)

            publisher.Send(sendbytes, sendbytes.Length)
        Catch ex As Exception
        End Try

        'Retrieve
        Try

            Dim ep As System.Net.IPEndPoint = New System.Net.IPEndPoint(System.Net.IPAddress.Any, 0)
            Dim rcvbytes() As Byte = subscriber.Receive(ep)
            Dim bitmapz As Bitmap = New Bitmap(picsize.Width, picsize.Height)
            imagefrombytes(rcvbytes, bitmapz)
            PictureBox2.Image = bitmapz

        Catch ex As Exception
        End Try

    End Sub

    Private Sub imagefrombytes(ByRef bytez() As Byte, ByRef piccolor As Bitmap)
        Dim rect As New Rectangle(0, 0, piccolor.Width, piccolor.Height)
        Dim bmpData As System.Drawing.Imaging.BitmapData = piccolor.LockBits(rect, _
            Drawing.Imaging.ImageLockMode.ReadWrite, Imaging.PixelFormat.Format32bppRgb)
        Dim ptr As IntPtr = bmpData.Scan0
        Dim bytes As Integer = bmpData.Stride * piccolor.Height
        Dim rgbValues(bytes - 1) As Byte
        System.Runtime.InteropServices.Marshal.Copy(ptr, rgbValues, 0, bytes)

        Dim secondcounter As Integer
        Dim tempred As Integer
        Dim tempblue As Integer
        Dim tempgreen As Integer
        Dim tempalpha As Integer
        secondcounter = 0

        While secondcounter < rgbValues.Length
            tempblue = rgbValues(secondcounter)
            tempgreen = rgbValues(secondcounter + 1)
            tempred = rgbValues(secondcounter + 2)
            tempalpha = rgbValues(secondcounter + 3)
            tempalpha = 255

            tempred = bytez(((secondcounter * 0.25) * 3) + 0)
            tempgreen = bytez(((secondcounter * 0.25) * 3) + 1)
            tempblue = bytez(((secondcounter * 0.25) * 3) + 2)

            rgbValues(secondcounter) = tempblue
            rgbValues(secondcounter + 1) = tempgreen
            rgbValues(secondcounter + 2) = tempred
            rgbValues(secondcounter + 3) = tempalpha

            secondcounter = secondcounter + 4
        End While


        System.Runtime.InteropServices.Marshal.Copy(rgbValues, 0, ptr, bytes)

        piccolor.UnlockBits(bmpData)

    End Sub

    Private Sub bytesfromimage(ByRef bytez() As Byte, ByRef piccolor As Bitmap)
        Dim rect As New Rectangle(0, 0, piccolor.Width, piccolor.Height)
        Dim bmpData As System.Drawing.Imaging.BitmapData = piccolor.LockBits(rect, _
            Drawing.Imaging.ImageLockMode.ReadWrite, Imaging.PixelFormat.Format32bppRgb)
        Dim ptr As IntPtr = bmpData.Scan0
        Dim bytes As Integer = bmpData.Stride * piccolor.Height
        Dim rgbValues(bytes - 1) As Byte
        System.Runtime.InteropServices.Marshal.Copy(ptr, rgbValues, 0, bytes)

        Dim secondcounter As Integer
        Dim tempred As Integer
        Dim tempblue As Integer
        Dim tempgreen As Integer
        Dim tempalpha As Integer
        secondcounter = 0
        Dim bytelist As List(Of Byte) = New List(Of Byte)

        While secondcounter < rgbValues.Length
            tempblue = rgbValues(secondcounter)
            tempgreen = rgbValues(secondcounter + 1)
            tempred = rgbValues(secondcounter + 2)
            tempalpha = rgbValues(secondcounter + 3)
            tempalpha = 255

            bytelist.Add(tempred)
            bytelist.Add(tempgreen)
            bytelist.Add(tempblue)

            rgbValues(secondcounter) = tempblue
            rgbValues(secondcounter + 1) = tempgreen
            rgbValues(secondcounter + 2) = tempred
            rgbValues(secondcounter + 3) = tempalpha

            secondcounter = secondcounter + 4
        End While


        System.Runtime.InteropServices.Marshal.Copy(rgbValues, 0, ptr, bytes)

        piccolor.UnlockBits(bmpData)

        Dim bytearray(bytelist.Count - 1) As Byte
        For i = 0 To bytelist.Count - 1
            bytearray(i) = bytelist(i)
        Next
        bytez = bytearray

    End Sub

    'Update Button
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        publisher.Connect(TB_Host.Text, 2013)
        subscriber.Client.Bind(New Net.IPEndPoint(Net.IPAddress.Any, 2013))
    End Sub
End Class

Just to note: This will stream the webcam, but with effortless modification, you can take snaps too. You can see how to adapt it to your desires by studying the Touchless Library. ;)
 
Share this answer
 
v2
VB.NET
Imports System.Net.Sockets
Imports System.Threading
Imports TouchlessLib

Public Class frmCamera
    Public CamMgr As TouchlessLib.TouchlessMgr
    Private Sub WebcamImage_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        Try
            Timer1.Enabled = False
            CamMgr.CurrentCamera.Dispose()
            CamMgr.Cameras.Item(cmbCamera.SelectedIndex).Dispose()
            CamMgr.Dispose()
        Catch ex As Exception

        End Try
    End Sub

    Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
        CamMgr = New TouchlessLib.TouchlessMgr
        ' TempFileNames2 = ""

        For i As Integer = 0 To CamMgr.Cameras.Count - 1
            cmbCamera.Items.Add(CamMgr.Cameras(i).ToString)
        Next
        If cmbCamera.Items.Count > 0 Then
            cmbCamera.SelectedIndex = 0
            Timer1.Enabled = True
        Else
            MsgBox("There are no Camera ...")
            Me.Close()
        End If

    End Sub



    Private Sub cmbCamera_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles cmbCamera.SelectedIndexChanged
        CamMgr.CurrentCamera = CamMgr.Cameras.ElementAt(cmbCamera.SelectedIndex)
    End Sub

    Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
        picFeed.Image = CamMgr.CurrentCamera.GetCurrentImage()
    End Sub

    Private Sub btnCapture_Click(sender As System.Object, e As System.EventArgs) Handles btnCapture.Click
        picPreview.Image = CamMgr.CurrentCamera.GetCurrentImage()
        btnSave.Enabled = True
    End Sub

    Private Sub btnSave_Click(sender As System.Object, e As System.EventArgs) Handles btnSave.Click
        Dim sTempFileName As String = System.IO.Path.GetTempFileName()
        ' TempFileNames2 = sTempFileName
        Dim b As Bitmap = picPreview.Image
        b.Save(sTempFileName, System.Drawing.Imaging.ImageFormat.Jpeg)
        Timer1.Enabled = False
        CamMgr.CurrentCamera.Dispose()
        CamMgr.Cameras.Item(cmbCamera.SelectedIndex).Dispose()
        CamMgr.Dispose()

        Me.Close()
    End Sub


End Class
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900