GAMBCODES

Acessando sua WebCam com C#

Existem inúmeras formas de se realizar a captura de uma câmera de vídeo. Vou mostrar aqui uma delas. Umas das quais achei muito simples e prática.

Existe uma biblioteca para a plataforma .Net chamada AForge.Net que com ela se pode realizar a captura de uma câmera de vídeo de forma muito fácil! Antes de mais nada faça o download da biblioteca clicando aqui.  Selecione a opção “[ Download Libraries Only ]”, o download contém um arquivo zipado com todas as DLLs necessárias que iremos utilizar. As DLLs que iremos utilizar são:  AForge.dll, AForge.Video.DirectShow.dll e AForge.Video.dll. Adicione essas dependências ao seu projeto e mãos à obra!

Adicione um formulário ao seu projeto contendo um PictureBox para a captura da imagem, um Label, um ComboBox para listagem dos dispositivos de imagem, um Button para salvar a imagem capturada, junto com um SaveFileDialog.

cameraForm

Dentro da sua Classe adicione dois objetos. Eles serão usados para o trabalho com a câmera:

private AForge.Video.DirectShow.VideoCaptureDevice videoSource;
private AForge.Video.DirectShow.FilterInfoCollection videoSources = new AForge.Video.DirectShow.FilterInfoCollection(AForge.Video.DirectShow.FilterCategory.VideoInputDevice);

Agora precisamos alimentar o Combox com os dispositivos de captura de imagem presentes no seu computador. Adicione onde você achar melhor o trecho de código a seguir:

foreach (AForge.Video.DirectShow.FilterInfo v in videoSources) {
	this.cboDispositivo.Items.Add(v.Name);
}

Uma vez selecionado o dispositivo, agora devemos realizar os procedimentos que realizarão a captura da imagem. No evento SelectedIndexChanged do Combobox adicione o seguinte treco de código:

if (cboDispositivo.SelectedIndex > -1) {
	videoSource = new AForge.Video.DirectShow.VideoCaptureDevice(videoSources(cboDispositivo.SelectedIndex).MonikerString);
	videoSource.NewFrame += videoSourceNewFrame;
	videoSource.Start();
	this.Text = "Dispositivo - " + cboDispositivo.SelectedItem.ToString();
}

Repare que foi assinado o evento “NewFrame” para o método “videoSourceNewFrame”. Esse evento é utilizado para captura a imagem do dispositivo.  Agora precisamos trabalhar no método desse evento quando for acionado.

private void videoSourceNewFrame(object sender, AForge.Video.NewFrameEventArgs eventArgs)
{
	Bitmap frameData = new Bitmap(eventArgs.Frame);
	picCamera.Image = frameData;
}

O método basicamente obtém a imagem capturada e vai passando de maneira constante para o PictureBox.

Agora caso você queria salvar uma imagem captura, no evento click do Button que nós adicionamos, devemos realizar os seguintes procedimentos:

private void btnGetCamera_Click(System.Object sender, System.EventArgs e)
{
	btnGetCamera.Enabled = false;
	if (videoSource != null & videoSource.IsRunning) {
		SaveFileDialog1.Filter = "JPEG (*.jpg;*.jpeg;*jpeg;*.jfif)|*.jpg;*.jpeg;*jpeg;*.jfif";
		if (SaveFileDialog1.ShowDialog == Windows.Forms.DialogResult.OK) {
			picCamera.Image.Save(SaveFileDialog1.FileName, System.Drawing.Imaging.ImageFormat.Jpeg);
		}
	}
}

Bem, basicamente é isso. Uma maneira muito simples de utilizar a câmera de seu computador. Até a próxima!

Comments

comments

Categories:   CSharp, webcam

Comments

  • Posted: 13 de Janeiro de 2017 18:41

    Rafael

    Amigo teria como vc mim mandar o código pelo email pois to com um problema aqui.