Usando una WebCam con Window Form | Parte 3: Aplicando Filtros


En este artículo de la serie: Usando una WebCam  con Window Forms vamos a aplicar algunos filtros que están contenidos en el Framework de Aforge.NET. Utilizaremos las librerías Aforge.Video y Aforge.Video.DirectShow como de costumbre, solo que esta vez agregaremos Aforge.Imaging para usar Filters.

El Formulario será sencillo como los anteriores. Esta vez tendremos 2 ComboBox (uno para los dispositivos de video y el otro para los distintos filtros que vamos a usar), 1 Button (para iniciar o detener la Cámara Web) y un PictureBox (para mostrar el video capturado por la Cámara Web). El diseño de esto debe ser algo como:

El código para hacer operar la cámara web es el mismo que el de los pasados artículos, por lo tanto, so lo voy  poner aquí el código que ha cambiado o se ha agregado. Primero veamos lo que hemos de agregar:

Private Function AplicarFiltro(imagen As Bitmap) As Bitmap
    Dim filter As IInPlaceFilter
    Select Case SelectedIndex
        Case 1
            Dim filter1 As New Grayscale(0.2125, 0.7154, 0.0721)
            imagen = filter1.Apply(imagen)
            Exit Select
        Case 2
            filter = New Invert()
            filter.ApplyInPlace(imagen)
            Exit Select
        Case 3
            filter = New Edges()
            filter.ApplyInPlace(imagen)
            Exit Select
        Case 4
            filter = New Mirror(False, True)
            filter.ApplyInPlace(imagen)
            Exit Select
        Case 5
            filter = New OilPainting(1)
            filter.ApplyInPlace(imagen)
            Exit Select
        Case 6
            filter = New Pixellate()
            filter.ApplyInPlace(imagen)
            Exit Select
        Case 7
            filter = New Sepia()
            filter.ApplyInPlace(imagen)
            Exit Select
        Case 8
            filter = New Blur()
            filter.ApplyInPlace(imagen)
            Exit Select
    End Select

    Return imagen
End Function

Este parte del código toma una variable del tipo Bitmap y devuelve otra variable Bitmap a la cual se le ha aplicado un filtro específico. En este caso tenemos los siguientes filtros para aplicar a nuestra imagen:

  1. Escala de Grises
  2. Invertir colores
  3. Bordes
  4. Espejo
  5. Pintura de Óleo
  6. Pixelar
  7. Sepia
  8. Desenfocar

Nota: Debemos tener claro que al aplicar filtros, nuestro Frame per Second bajará y se verá un poco más lenta la imagen.

Para aplicar el filtro debemos hacer una pequeña modificación a nuestro evento NewFrame:

Private Sub video_NuevoFrame(sender As Object, eventArgs As NewFrameEventArgs)
    Dim Imagen As Bitmap = DirectCast(eventArgs.Frame.Clone(), Bitmap)
    webcam.Image = AplicarFiltro(Imagen)
End Sub

Como se puede apreciar, aplicamos el filtro usando la función antes definida y el valor es asignado a nuestro PictureBox. Nuestro programa debe quedar así una vez que hayamos terminado:

Una vez más les dejo el proyecto hecho en C# (Filter_Webcam_WF_Csharp.zip) y VB.NET (Filter_Webcam_WF_VB.zip), cambien la extensión de .odt a .zip.

Anuncios

4 Respuestas a “Usando una WebCam con Window Form | Parte 3: Aplicando Filtros

  1. hola quisiera saber si me podrias enviar el codigo completo pues soy un poco novato en esto y necesito precisamente un programa que aplique filtros

  2. Hola, baje tu ejemplo y la verdad que me anda muy bien. El inconveniente que tengo, quisiera saber si te paso y si lo solucionastes, es que no puedo usar el zoom de la maquina (desde codigo). Con DirectShow puedo mover la camara a ambos lados, arriba y abajo, pero no puedo hacer funcionar el zoom. desde ya muchas Gracias, y felicitaciones por los ejemplos, me han resultado muy didacticos

  3. Estimado Señor:
    He intentado bajar los códigos de ejemplo en VB pero no me es posible.
    ¿Puede indicarme un lugar de descarga? o, si lo desea puede enviarlos a mi correo

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s