Antes que nada hay que descargar un archivo el cual contiene los dos .dll que nos servira para hacer funcionar nuestra webcam, les dejo el link de descarga:
https://skydrive.live.com/?cid=E17AAA68D9CA0FF8&id=E17AAA68D9CA0FF8%21452
La carpeta comprimida se llama AForge, mas adelantito les explicare en la ubicacion donde deben de ponerla y como poder utilizarla en su proyecto ya que estos archivos hay que agregarlos como referencias.
Bueno para empezar vamos a crear un nuevo proyecto en su VS, yo lo nombre poniendole EjemploWebcam e hice un formulario que contiene un combobox, un picturebox y un simple boton.
Ahora hay que agregar a nuestro proyecto las referencias de los archivos dll descargados de la siguiente manera:
En el explorador de soluciones de su proyecto hay que pocisionarnos donde dice References, darle clic derecho y darle clic en agregar referencia:
Pero para eso primero hay que mover los archivos dlls descargados a su carpeta DEBUG del proyecto.
Entonces volviendo a la pantalla donde agregaremos la referencia, cuando le del clic en agregar referencia les saldra una ventana en la cual debemos ir a la pestaña de Examinar y en donde dice Buscar en hay que ir a la carpeta del proyecto donde tenemos nuestros archivos dlls y seleccionar ambos archivos dlls para agregarlos al proyecto.
Si se fijan bien ya se agregaron los archivos dlls a su proyecto:
En nuestro proyecto hay que utilizar las siguientes librerias junto con la de los archivos que descargamos con el using para que pueda reconocer nuestro codigo.Ausing System.IO;
using System.Drawing.Imaging;
using AForge.Video;
using AForge.Video.DirectShow;
Y tambien hay que hacer instancias de los siguientes objetos en nuestro proyecto:
private bool ExistenDispositivos = false;
private FilterInfoCollection DispositivosDeVideo;
private VideoCaptureDevice FuenteDeVideo = null;
Ok ahora lo que vamos a hacer es irnos al evento onclic de nuestro boton.
NOTA: Como propiedad de texto al boton ponganle: Iniciar, adelante explicare el por que.
Y agregamos el siguiente codigo a nuestro evento.
if (btnIniciar.Text == "Iniciar")
{
if (ExistenDispositivos)
{
FuenteDeVideo = new VideoCaptureDevice(DispositivosDeVideo[cboDispositivos.SelectedIndex].MonikerString);
FuenteDeVideo.NewFrame += new NewFrameEventHandler(video_NuevoFrame);
FuenteDeVideo.Start();
btnIniciar.Text = "Detener";
cboDispositivos.Enabled = false;
gbMenu.Text = DispositivosDeVideo[cboDispositivos.SelectedIndex].Name.ToString();
}
else
MessageBox.Show("Error: No se encuentra dispositivo.");
}
else
{
if (FuenteDeVideo.IsRunning)
{
TerminarFuenteDeVideo();
btnIniciar.Text = "Iniciar";
cboDispositivos.Enabled = true;
}
}
No se asusten, yo se que su proyecto les marcara en rojo los metodos que no encuentra por que exactamente no se encuentran pero aqui se los pego en codigo para que los pongan dentro de su proyecto.
public void CargarDispositivos(FilterInfoCollection Dispositivos)
{
for (int i = 0; i < Dispositivos.Count; i++)
cboDispositivos.Items.Add(Dispositivos[i].Name.ToString());
//cboDispositivos es nuestro combobox
cboDispositivos.Text = cboDispositivos.Items[0].ToString();
}
public void BuscarDispositivos()
{
DispositivosDeVideo =
new FilterInfoCollection(FilterCategory.VideoInputDevice);
if (DispositivosDeVideo.Count == 0)
ExistenDispositivos =
false;
else
{
ExistenDispositivos =
true;
CargarDispositivos(DispositivosDeVideo);
}
} public void TerminarFuenteDeVideo()
{
if (!(FuenteDeVideo == null))
if (FuenteDeVideo.IsRunning)
{
FuenteDeVideo.SignalToStop();
FuenteDeVideo =
null;
}
}
private void video_NuevoFrame(object sender, NewFrameEventArgs eventArgs)
{ Bitmap Imagen = (Bitmap)eventArgs.Frame.Clone();
pbFotoUser.Image = Imagen;
//pbFotoUser es nuestro pictureBox
}
Ahora si compilan el proyecto y lo ejecutan.
Para poder guardar la foto es sencillo, con esta linea de codigo:
pbFotoUser.Image.Save(Nombre,
ImageFormat.Jpeg);
Donde pbFotoUser es nuestro pictureBox y como propiedad en imagen tiene el metodo Save que sirve para guardar, ahi ustedes jueguen con eso es bastante facil.
Cualquier duda, comentario es bien recibido espero les haya servido de algo.
Les deje el archivo del proyecto ahi mismo en mi SkyDrive para que puedan descargarlo, se llama EjemploWebcam esta comprimido.
Saludos.
Misael Ontiveros