Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 'This includes an ENABLED timer with an interval of 1
- '5 Trackbars with a max of 255
- '1 numeric up down with a max of 100
- '3 buttons
- '6 labels
- '2 pictureboxs
- '1 Savefiledialog
- Imports TouchlessLib
- Public Class Form1
- Dim Touchless As New TouchlessLib.TouchlessMgr
- Dim Camera1 As TouchlessLib.Camera
- Dim picsize As Size = New Size(1280, 720)
- Dim bitmapz As Bitmap = New Bitmap(picsize.Width, picsize.Height)
- Dim vectordata As New List(Of pointz)
- Dim rec As Boolean = False
- Dim R As Integer = 220
- Dim G As Integer = 255
- Dim B As Integer = 255
- Dim t As Integer = 0
- Dim PicMin As Integer = 0
- Dim PicMax As Integer = picsize.Width
- Structure pointz
- Public X As Single
- Public Y As Single
- Public z As Single
- End Structure
- Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
- bitmapz = Touchless.CurrentCamera.GetCurrentImage
- If bitmapz IsNot Nothing Then
- PictureBox1.Image = bitmapz.Clone
- FindCycle()
- PictureBox2.Image = bitmapz.Clone
- Label3.Text = "Z:" & t
- Label4.Text = "R:" & R
- Label5.Text = "G:" & G
- Label6.Text = "B:" & B
- If rec = True Then
- t = t + 1
- End If
- End If
- End Sub
- Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
- TrackBar4.Maximum = picsize.Width
- TrackBar1.Value = R
- TrackBar2.Value = G
- TrackBar3.Value = B
- TrackBar4.Maximum = picsize.Width
- TrackBar5.Maximum = picsize.Width
- TrackBar5.Value = picsize.Width
- Try
- Camera1 = Touchless.Cameras.ElementAt(1)
- Catch ex As Exception
- Try
- Camera1 = Touchless.Cameras.ElementAt(0)
- Catch ex2 As Exception
- MsgBox("No Camera")
- End Try
- End Try
- Touchless.CurrentCamera = Camera1
- Touchless.CurrentCamera.CaptureWidth = picsize.Width
- Touchless.CurrentCamera.CaptureHeight = picsize.Height
- End Sub
- Private Sub FindCycle()
- Try
- Dim rect As New Rectangle(0, 0, picsize.Width, picsize.Height)
- Dim bmpData As System.Drawing.Imaging.BitmapData = bitmapz.LockBits(rect, _
- Drawing.Imaging.ImageLockMode.ReadWrite, bitmapz.PixelFormat)
- Dim ptr As IntPtr = bmpData.Scan0
- Dim bytes As Integer = bmpData.Stride * picsize.Height
- Dim rgbValues(bytes - 1) As Byte
- System.Runtime.InteropServices.Marshal.Copy(ptr, rgbValues, 0, bytes)
- Dim secondcounter As Integer = 0
- Dim tempred As Integer
- Dim tempblue As Integer
- Dim tempgreen As Integer
- Dim tempalpha As Integer
- Dim tempx As Integer
- Dim tempy As Integer
- Dim xfound(picsize.Height) As Boolean
- While secondcounter < rgbValues.Length
- tempblue = rgbValues(secondcounter)
- tempgreen = rgbValues(secondcounter + 1)
- tempred = rgbValues(secondcounter + 2)
- tempalpha = rgbValues(secondcounter + 3)
- tempalpha = 255
- tempy = Math.Floor(((secondcounter * 0.25) / picsize.Width))
- tempx = (secondcounter * 0.25) - (tempy * picsize.Width)
- If tempx < 0 Then
- tempx = tempx + picsize.Width
- End If
- If tempred > R And tempblue > B And tempgreen > G And xfound(tempy) = False And tempx >= PicMin And tempx <= PicMax Then
- If rec = True Then
- Dim v As New pointz
- v.X = tempx
- v.Y = tempy
- v.z = t
- vectordata.Add(v)
- End If
- xfound(tempy) = True
- tempred = 255
- tempblue = 0
- tempgreen = 0
- Else
- If tempx = PicMin Then
- tempred = 0
- tempblue = 255
- tempgreen = 0
- ElseIf tempx = PicMax Then
- tempred = 0
- tempblue = 0
- tempgreen = 255
- Else
- tempred = 0
- tempblue = 0
- tempgreen = 0
- End If
- End If
- rgbValues(secondcounter) = tempblue
- rgbValues(secondcounter + 1) = tempgreen
- rgbValues(secondcounter + 2) = tempred
- rgbValues(secondcounter + 3) = tempalpha
- secondcounter = secondcounter + 4
- End While
- ' Copy the RGB values back to the bitmap
- System.Runtime.InteropServices.Marshal.Copy(rgbValues, 0, ptr, bytes)
- ' Unlock the bits.
- bitmapz.UnlockBits(bmpData)
- Catch ex As Exception
- End Try
- End Sub
- Private Sub writefile()
- Dim Max As Integer = 0
- Dim Min As Integer = 999999
- For i = 0 To vectordata.Count - 1
- If vectordata(i).X > Max Then Max = vectordata(i).X
- If vectordata(i).X < Min Then Min = vectordata(i).X
- Next
- Dim Mid As Single = (Max - Min) / 2
- Dim colordata(vectordata.Count - 1) As Color
- For i = 0 To colordata.Count - 1
- If (vectordata(i).X - Min) >= Mid Then
- colordata(i) = Color.FromArgb(((((vectordata(i).X - Min) - Mid) / Mid) * 255),
- 255 - ((((vectordata(i).X - Min) - Mid) / Mid) * 255), 0)
- ElseIf (vectordata(i).X - Min) < Mid Then
- colordata(i) = Color.FromArgb(0, (((vectordata(i).X - Min) / Mid) * 255),
- 255 - (((vectordata(i).X - Min) / Mid) * 255))
- End If
- Next
- Dim pointstring(vectordata.Count - 1) As String
- For i = 0 To vectordata.Count - 1
- Dim Scale As Single = NumericUpDown1.Value
- pointstring(i) = "v " & vectordata(i).X.ToString & " " & vectordata(i).Y.ToString & " " & (vectordata(i).z / Scale).ToString & " " & (colordata(i).R / 255) & " " & (colordata(i).G / 255) & " " & (colordata(i).B / 255)
- Next
- GC.Collect()
- IO.File.WriteAllLines(SaveFileDialog1.FileName, pointstring)
- GC.Collect()
- End Sub
- Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
- SaveFileDialog1.ShowDialog()
- End Sub
- Private Sub SaveFileDialog1_FileOk(sender As System.Object, e As System.ComponentModel.CancelEventArgs) Handles SaveFileDialog1.FileOk
- writefile()
- End Sub
- Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
- vectordata.Clear()
- t = 0
- End Sub
- Private Sub TrackBar1_Scroll(sender As System.Object, e As System.EventArgs) Handles TrackBar1.Scroll
- R = TrackBar1.Value
- End Sub
- Private Sub TrackBar2_Scroll(sender As System.Object, e As System.EventArgs) Handles TrackBar2.Scroll
- G = TrackBar2.Value
- End Sub
- Private Sub TrackBar3_Scroll(sender As System.Object, e As System.EventArgs) Handles TrackBar3.Scroll
- B = TrackBar3.Value
- End Sub
- Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
- If rec = False Then
- Button3.Text = "stop"
- rec = True
- Else
- Button3.Text = "rec"
- rec = False
- End If
- End Sub
- Private Sub TrackBar4_Scroll(sender As System.Object, e As System.EventArgs) Handles TrackBar4.Scroll
- PicMin = TrackBar4.Value
- End Sub
- Private Sub TrackBar5_Scroll(sender As System.Object, e As System.EventArgs) Handles TrackBar5.Scroll
- PicMax = TrackBar5.Value
- End Sub
- End Class
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement