C# - Capturando e Salvando Imagens da WebCam (revisitado) |
Neste artigo eu vou mostrar mais uma forma de capturar e salvar imagens a partir de uma WebCam instalada em um computador local. |
Este é um artigo para iniciantes que mostra mais uma maneira de capturar imagens de uma WebCam local salvando-as no sistema de arquivos.
Neste exemplo estou usando a biblioteca DirectX que segue junto com o projeto.
Recursos usados:
Nota: Baixe e use a versão Community 2015 do VS ela é grátis e é equivalente a versão Professional.
Criando o projeto no VS Community
Abra o VS Community 2015 e clique em New Project;
Selecione a linguagem Visual C# e o template Windows Forms Application;
Informe o nome CapturaImagemWebCam e clique no botão OK;
No formulário form1.cs inclua a partir da ToolBox os seguintes controles:
1 PictureBox - picWebCam
1 PictureBox - picImagem
2 Buttons - btnCapturar e btnSalvar
Disponha os controles conforme o leiaute da figura a seguir:
A seguir declare os seguintes namespaces no formulário form1.cs:
using
System;No início do formulário vamos declarar as variáveis que iremos usar no projeto:
public
DirectX.Capture.Filter
Camera; public DirectX.Capture.Capture CaptureInfo; public DirectX.Capture.Filters CamContainer; Image capturaImagem; public string caminhoImagemSalva = null; |
No evento Load do formulário vamos incluir o código abaixo que identifica o dispositivo WebCam e exibe a imagem em picWebCam e captura a imagem em picImagem:
private void Form1_Load(object sender, EventArgs e) { CamContainer = new DirectX.Capture.Filters(); try { int no_of_cam = CamContainer.VideoInputDevices.Count;
for (int i = 0; i < no_of_cam; i++ ) // inicializa a Captura usando o dispositivo // Define a janela de visualização do vídeo // Capturando o tratamento de evento // Captura o frame do dispositivo // Se o dispositivo foi encontrado e inicializado então sai sem checar o resto |
No método AtualizaImagem temos o código que captura a imagem da webcam no picturebox picImagem:
public void AtualizaImagem(PictureBox frame)
{
try
{
capturaImagem = frame.Image;
this.picImagem.Image = capturaImagem;
}
catch (Exception ex)
{
MessageBox.Show("Erro " + ex.Message);
}
}
|
Para capturar outro frame da WebCam basta clicar no botão Capturar Imagem que possui o seguinte código no seu evento Click:
private void btnCaptura_Click(object sender, EventArgs e)
{
try
{
CaptureInfo.CaptureFrame();
}
catch (Exception ex)
{
MessageBox.Show("Erro " + ex.Message);
}
}
|
Finalmente no evento Click do botão Salvar Imagem digite o código a seguir:
private void btnSalvar_Click(object sender, EventArgs e) { try { caminhoImagemSalva = @"c:\dados\" + "ImagemWebCam" + DateTime.Now.Day.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Year.ToString() + DateTime.Now.Millisecond.ToString() + ".jpg"; picImagem.Image.Save(caminhoImagemSalva, ImageFormat.Jpeg); MessageBox.Show("Imagem salva com sucesso"); } catch(Exception ex) { MessageBox.Show("Erro " + ex.Message); } } |
Este código salva a imagem em uma pasta pré-definida com o nome ImagemWebCam mais o dia, o mês, o ano e os milesegundos.
Agora é só alegria...
Executando o projeto e capturando uma imagem temos o seguinte resultado:
Fique a vontade para alterar o projeto e incrementar novas funcionalidades.
Pegue o projeto completo aqui: CapturaImagemWebCam.zip
Porque do céu se manifesta a ira de Deus sobre toda a impiedade e injustiça dos
homens, que detêm a verdade em injustiça.
Porquanto o que de Deus se pode conhecer neles se manifesta, porque Deus lho
manifestou.
Porque as suas coisas invisíveis, desde a criação do mundo, tanto o seu eterno
poder, como a sua divindade, se entendem, e claramente se vêem pelas coisas que
estão criadas, para que eles fiquem inescusáveis;
Romanos 1:18-20
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#