Su espejo se ha caído al suelo y se ha roto en miles de pedazos; pero necesita un espejo para afeitarse o para maquillarse. Solo tiene 15 minutos antes de coger el autobús para ir al trabajo. ¿Qué puede hacer?
En este tutorial se va a hacer un programa que le permite usar su cámara web como un espejo. Aprenderá a:
Crear una aplicación GTK+
Acceder a su cámara web usando GStreamer y empotrar el resultado en una ventana
Obtener las fotos de su cámara web
Necesitará lo siguiente para poder seguir este tutorial:
Una copia instalada del EID Anjuta
Copias instaladas de GTK, GStreamer y de un compilador de Vala
Conocimientos básico de un lenguaje de programación orientado a objetos
Antes de empezar a programar, deberá configurar un proyecto nuevo en Anjuta. Esto creará todos los archivos que necesite para construir y ejecutar el código más adelante. También es útil para mantener todo ordenado.
Inicie Anjuta y pulse
Elija
Desactive la opción
Asegúrese de que
Pulse
using GLib;
using Gtk;
El código carga una ventana (vacía) y la muestra. A continuación hay más detalles; omita esta lista si entiende los conceptos básicos:
Las dos líneas using
importan espacios de nombres, por lo que no hay que nombrarlas explícitamente.
El constructor de la clase Main
crea una ventana nueva y establece su título. Después se muestra la ventana y se conecta una señal que cierra la aplicación si se cierra la ventana. Se verán más señales más adelante.
La función estática main
se ejecuta de manera predeterminada cuando inicia una aplicación en Vala. Llama a unas pocas funciones que crean la clase «Main», la configuran y ejecutan la aplicación. La función Gtk.Main
inicia el bucle principal de GTK+, que ejecuta la interfaz de usuario y empieza a escuchar eventos (como pulsaciones del ratón y del teclado).
Este código está listo para usarse, por lo que puede compilarlo pulsando
Cambie la
El entorno multimedia de trabajo GStreamer es capaz de manejar vídeo desde cámaras web. Añada GStreamer a su aplicación y podrá acceder al flujo de vídeo.
using GLib;
using Gtk;
public class Main : Object
{
private Gst.Element camerabin;
public Main () {
this.camerabin = Gst.ElementFactory.make ("camerabin", "camera");
this.camerabin.set_state (Gst.State.PLAYING);
}
static int main (string[] args) {
Gtk.init (ref args);
Gst.init (ref args);
var app = new Main ();
Gtk.main ();
return 0;
}
}
Primero se quita la ventana creada anteriormente, ya que GStreamer se encargará de mostrar la imagen en la pantalla.
Ahora se va a crear un elemento de GStreamer que accede a la cámara web. Se va a usar el elemento «Camerabin», que es un elemento de cámara todo en uno capaz de hacer fotos, vídeos, aplicar efectos y mucho más. Perfecto para nuestro caso de uso. Con this.camerabin.set_state (Gst.State.PLAYING)
se indica a la tubería de GStreamer que se acaba de crear que empiece a reproducir. Fácil, ¿no?
Por supuesto, también es posible integrar el vídeo más ajustadamente en otras ventanas, pero esto es un tema avanzado que incluye algunos detalles sobre el sistema «X-Window» que aquí se omiten.
Compile y ejecute de nuevo. Acabará teniendo dos ventanas. En el siguiente paso, se integrará el vídeo en una ventana de GTK+.
Si tiene problemas con este tutorial, compare su código con este código de referencia. También hay una implemnetación más amplia que empotra la ventana en una ventana GTK regular que implica algunas técnicas avanzadas, y añade botones para iniciar/parar la imagen.
Para obtener más información sobre el lenguaje de programación Vala, puede querer revisar el tutorial de Vala.
Ya está, ha conseguido crear una aplicación de cámara web con todas las funciones de fotos en 15 minutos. Ahora puede afeitarse la barba o maquillar su bonita cara justo antes de tener un gran día en su trabajo, donde puede impresionar a sus amigos y colegas con una impresionante aplicación que ha hecho en 15 minutos.