Instituto Tecnologico Fransisco Febres Cordero_vision_artificial

download Instituto Tecnologico Fransisco Febres Cordero_vision_artificial

of 11

Transcript of Instituto Tecnologico Fransisco Febres Cordero_vision_artificial

  • INSTITUTO

    TECNOLOGICO

    FRANSISCO FEBRES

    CORDERO

    USO DE LA VISION

    ARTIFICIAL PARA EL

    MOVIMIENTO DE UN

    BRAZO ROBOTICO

    POR: EFREN RODAS

  • CODIGO PARA LA DETECION DE COLORES ENVIAMOS SEALES A UN BUFFER CONTROLADO CON LA AYUDA DE UN PIC 2850 LAS LETRAS A ENVIAR AL BUFFER SON.

    SERVO 1: s-t

    SERVO 2: u-v

    SERVO 3: w-x

    SERVO 4: y-x

    a=apagar

    CODIGO

    Option Strict On Imports Emgu.CV Imports Emgu.CV.CvEnum Imports Emgu.CV.Structure Imports Emgu.CV.UI Imports System.IO Public Class Form1 Dim capwebcam As Capture Dim bolcapturandoproceso As Boolean = False Dim imgoriginal As Image(Of Bgr, Byte) Dim imgverde As Image(Of Gray, Byte) Dim imgroja As Image(Of Gray, Byte) Dim imgazul As Image(Of Gray, Byte) Dim imgamarilla As Image(Of Gray, Byte) ''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Dim strbufferin As String Dim strbufferout As String Dim convertido As String Dim n(8) As String Dim x As Integer = 5 Dim c As Integer Sub New() InitializeComponent() End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Try capwebcam = New Capture Catch ex As Exception Label1.Text = ex.Message End Try AddHandler Application.Idle, New EventHandler(AddressOf Me.procesos) bolcapturandoproceso = True ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' btnconectar.Enabled = False strbufferin = "" strbufferout = "" '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' If (bolcapturandoproceso = True) Then RemoveHandler Application.Idle, New EventHandler(AddressOf Me.procesos) bolcapturandoproceso = False btnpausa.Text = "RESUMIR" Else

  • AddHandler Application.Idle, New EventHandler(AddressOf Me.procesos) bolcapturandoproceso = True btnpausa.Text = "PAUSAR" End If ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' End Sub Sub procesos(ByVal sender As Object, ByVal arg As EventArgs) imgoriginal = capwebcam.QueryFrame If imgoriginal Is Nothing Then Return End If imgazul = imgoriginal.InRange(New Bgr(175, 0, 0), New Bgr(250, 100, 100)) imgazul.SmoothGaussian(3) imgverde = imgoriginal.InRange(New Bgr(0, 175, 0), New Bgr(100, 250, 100)) imgverde.SmoothGaussian(3) imgroja = imgoriginal.InRange(New Bgr(0, 0, 175), New Bgr(100, 100, 250)) imgroja.SmoothGaussian(3) Dim verde As CircleF() = imgverde.HoughCircles(New Gray(100), New Gray(50), 2, imgverde.Height / 4, 10, 400)(0) Dim rojo As CircleF() = imgroja.HoughCircles(New Gray(100), New Gray(50), 2, imgroja.Height / 4, 10, 400)(0) Dim azul As CircleF() = imgazul.HoughCircles(New Gray(100), New Gray(50), 2, imgazul.Height / 4, 10, 400)(0) For Each CircleF In azul CvInvoke.cvCircle(imgoriginal, New Point(CInt(CircleF.Center.X), CInt(CircleF.Center.Y)), 3, New MCvScalar(0, 255, 0), -1, LINE_TYPE.CV_AA, 0) imgoriginal.Draw(CircleF, New Bgr(Color.Green), 3) PAUSAR() x = 1 serrarPinza() Exit For Next For Each CircleF In verde CvInvoke.cvCircle(imgoriginal, New Point(CInt(CircleF.Center.X), CInt(CircleF.Center.Y)), 3, New MCvScalar(0, 255, 0), -1, LINE_TYPE.CV_AA, 0) imgoriginal.Draw(CircleF, New Bgr(Color.Red), 3) PAUSAR() x = 2 serrarPinza() Exit For Next For Each CircleF In rojo CvInvoke.cvCircle(imgoriginal, New Point(CInt(CircleF.Center.X), CInt(CircleF.Center.Y)), 3, New MCvScalar(0, 255, 0), -1, LINE_TYPE.CV_AA, 0) imgoriginal.Draw(CircleF, New Bgr(Color.Blue), 3) PAUSAR() x = 3 serrarPinza() Exit For Next

  • imboriginal.Image = imgoriginal imbrojo.Image = imgroja imbverde.Image = imgverde imbazul.Image = imgazul End Sub Private Sub btnpausa_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnpausa.Click PAUSAR() End Sub #Region "conectar" Private Sub btnconectar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnconectar.Click If btnconectar.Text = "CONECTAR" Then sppuertos.PortName = cmbpuertos.Text btnconectar.Text = "DESCONECTAR" grpmanual.Enabled = True btnpausa.Enabled = True sppuertos.Open() ElseIf btnconectar.Text = "DESCONECTAR" Then btnconectar.Text = "CONECTAR" sppuertos.Close() End If End Sub Private Sub btndeterminarconeccion_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btndeterminarconeccion.Click cmbpuertos.Items.Clear() For Each puertodisponible As String In My.Computer.Ports.SerialPortNames cmbpuertos.Items.Add(puertodisponible) Next If cmbpuertos.Items.Count > 0 Then cmbpuertos.Text = cmbpuertos.Items(0) MessageBox.Show("SELECCIONE EL PUERTO") btnconectar.Enabled = True Else MessageBox.Show("NINGUN PUERTO ENCONTRADO") btnconectar.Enabled = False grpmanual.Enabled = False cmbpuertos.Text = "" End If End Sub #End Region Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click End End Sub #Region "regreso" Sub abrirPinza() sppuertos.DiscardInBuffer() strbufferout = "w" sppuertos.Write(strbufferout)

  • strbufferout = "" timservopinza.Enabled = True End Sub Private Sub timservopinza_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles timservopinza.Tick sppuertos.DiscardInBuffer() strbufferout = "a" sppuertos.Write(strbufferout) timservopinza.Enabled = False strbufferout = "" If x = 1 Then moverRojoDerecha() ElseIf x = 2 Then moverVerdeDerecha() ElseIf x = 3 Then moverAzulDerecha() End If End Sub Sub moverAzulDerecha() sppuertos.DiscardInBuffer() strbufferout = "t" sppuertos.Write(strbufferout) timservoazulvolver.Enabled = True End Sub Private Sub timservoazulvolver_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles timservoazulvolver.Tick sppuertos.DiscardInBuffer() strbufferout = "a" sppuertos.Write(strbufferout) strbufferout = "" timservoazulvolver.Enabled = False moverAbajo() End Sub Sub moverVerdeDerecha() sppuertos.DiscardInBuffer() strbufferout = "t" sppuertos.Write(strbufferout) timservoverdevolver.Enabled = True End Sub Private Sub timservoverdevolver_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles timservoverdevolver.Tick sppuertos.DiscardInBuffer() strbufferout = "a" sppuertos.Write(strbufferout) strbufferout = "" timservoverdevolver.Enabled = False moverAbajo() End Sub Sub moverRojoDerecha() sppuertos.DiscardInBuffer() strbufferout = "t" sppuertos.Write(strbufferout) strbufferout = "" timservorojovolver.Enabled = True End Sub Private Sub timservorojovolver_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles timservorojovolver.Tick

  • sppuertos.DiscardInBuffer() strbufferout = "a" sppuertos.Write(strbufferout) strbufferout = "" timservorojovolver.Enabled = False moverAbajo() End Sub Sub moverAbajo() sppuertos.DiscardInBuffer() strbufferout = "y" sppuertos.Write(strbufferout) strbufferout = "" timservobajar2.Enabled = True End Sub Private Sub timservobajar2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles timservobajar2.Tick sppuertos.DiscardInBuffer() strbufferout = "a" sppuertos.Write(strbufferout) strbufferout = "" timservobajar2.Enabled = False End Sub #End Region ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' #Region "camino de ida" ''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Sub serrarPinza() sppuertos.DiscardInBuffer() strbufferout = "x" sppuertos.Write(strbufferout) strbufferout = "" Timservopinza1.Enabled = True End Sub Private Sub Timservopinza1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timservopinza1.Tick sppuertos.DiscardInBuffer() strbufferout = "a" sppuertos.Write(strbufferout) strbufferout = "" Timservopinza1.Enabled = False moverArriba() End Sub ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Sub moverArriba() sppuertos.DiscardInBuffer() strbufferout = "z" sppuertos.Write(strbufferout) strbufferout = "" timservoBajar1.Enabled = True End Sub

  • Private Sub timservoBajar1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles timservoBajar1.Tick sppuertos.DiscardInBuffer() strbufferout = "a" sppuertos.Write(strbufferout) strbufferout = "" timservoBajar1.Enabled = False If x = 1 Then moverRojoIzquierda() ElseIf x = 2 Then moverVerdeIzquierda() ElseIf x = 3 Then moverAzulIzquierda() End If End Sub ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Sub moverAzulIzquierda() sppuertos.DiscardInBuffer() strbufferout = "s" sppuertos.Write(strbufferout) strbufferout = "" timservoazul.Enabled = True End Sub Private Sub timservoazul_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles timservoazul.Tick sppuertos.DiscardInBuffer() strbufferout = "a" sppuertos.Write(strbufferout) strbufferout = "" timservoazul.Enabled = False abrirPinza() End Sub ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Sub moverRojoIzquierda() sppuertos.DiscardInBuffer() strbufferout = "s" sppuertos.Write(strbufferout) strbufferout = "" timservrojo.Enabled = True End Sub Private Sub timservrojo_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles timservrojo.Tick sppuertos.DiscardInBuffer() strbufferout = "a" sppuertos.Write(strbufferout) strbufferout = "" timservrojo.Enabled = False abrirPinza() End Sub

  • ''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Sub moverVerdeIzquierda() sppuertos.DiscardInBuffer() strbufferout = "s" sppuertos.Write(strbufferout) strbufferout = "" timservoverde.Enabled = True End Sub Private Sub timservoverde_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles timservoverde.Tick sppuertos.DiscardInBuffer() strbufferout = "a" sppuertos.Write(strbufferout) strbufferout = "" timservoverde.Enabled = False abrirPinza() End Sub #End Region #Region "butons" Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click sppuertos.DiscardInBuffer() strbufferout = "s" sppuertos.Write(strbufferout) End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click sppuertos.DiscardInBuffer() strbufferout = "t" sppuertos.Write(strbufferout) End Sub Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click sppuertos.DiscardInBuffer() strbufferout = "u" sppuertos.Write(strbufferout) End Sub Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click sppuertos.DiscardInBuffer() strbufferout = "v" sppuertos.Write(strbufferout) End Sub Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click sppuertos.DiscardInBuffer()

  • strbufferout = "w" sppuertos.Write(strbufferout) End Sub Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click sppuertos.DiscardInBuffer() strbufferout = "x" sppuertos.Write(strbufferout) End Sub Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click sppuertos.DiscardInBuffer() strbufferout = "y" sppuertos.Write(strbufferout) End Sub Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click sppuertos.DiscardInBuffer() strbufferout = "z" sppuertos.Write(strbufferout) ' timservobajar2.Enabled = True End Sub Private Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click sppuertos.DiscardInBuffer() strbufferout = "a" sppuertos.Write(strbufferout) timservoazul.Enabled = False timservoazulvolver.Enabled = False timservoBajar1.Enabled = False timservobajar2.Enabled = False timservorojovolver.Enabled = False timservrojo.Enabled = False timservoverde.Enabled = False timservoverdevolver.Enabled = False timservopinza.Enabled = False Timservopinza1.Enabled = False End Sub #End Region Sub PAUSAR() If (bolcapturandoproceso = True) Then RemoveHandler Application.Idle, New EventHandler(AddressOf Me.procesos) bolcapturandoproceso = False btnpausa.Text = "RESUMIR" Else AddHandler Application.Idle, New EventHandler(AddressOf Me.procesos) bolcapturandoproceso = True btnpausa.Text = "PAUSAR" End If End Sub End Class

  • IMGENES