Visual Basic 6 - Capturando imagens de uma WebCam
Capturar imagens de uma WebCam com o Visual Basic 6.0 é mais fácil do que você pensa. Algumas linhas de código e a utilização de algumas APIs do Windows são o suficiente. Vamos então ao trabalho.
Inicie um novo projeto no Visual Basic 6 com service pack atualizado do tipo Standar EXE com um nome sugestivo como web Cam.
Veja também a colaboração : VB - Usando uma Webcam. para obter detalhes das APIs usadas. |
No formulário padrão altere o nome para frmwebcam e inclua os seguintes controles:
Abra o formulário e no início digite as seguintes linhas de código:
Private Declare Function capCreateCaptureWindow Lib "avicap32.dll" Alias "capCreateCaptureWindowA"
(ByVal lpszWindowName As String, ByVal dwStyle As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hwndParent As Long, ByVal nID As Long) As Long Private Declare Function SendMessage Lib "USER32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Private Declare Function ReleaseCapture Lib "USER32" () As Long Private Const WM_CAP_DRIVER_CONNECT As Long = 1034 Private Const WM_CAP_DRIVER_DISCONNECT As Long = 1035 Private Const WM_CAP_GRAB_FRAME As Long = 1084 Private Const WM_CAP_EDIT_COPY As Long = 1054 Private Const WM_CAP_DLG_VIDEOFORMAT As Long = 1065 Private Const WM_CAP_DLG_VIDEOSOURCE As Long = 1066 Private Const WM_CLOSE = &H10 Private mCapHwnd As Long |
Vamos usar as funções :
Todo o trabalho é feita pelas APIs do Windows que capturam a imagem da webCam e salvam na área de transferência do Windows (ClipBoard). Ao final basta obter a imagem do ClipBoard e exibir no controle PictureBox.
O código do botão que inicia a webCam é o seguinte :
Private Sub cmdIniciaWebCam_Click() 'Inicia a câmera mCapHwnd = capCreateCaptureWindow("captura Janela", 0, 0, 0, 320, 240, Me.hwnd, 0) SendMessage mCapHwnd, WM_CAP_DRIVER_CONNECT, 0, 0 End Sub |
O código do evento Timer do controle Timer é dado a seguir. Inicialmente o controle não esta ativo pois sua propriedade Enabled esta com o valor padrão igual a False;
Private Sub Timer1_Timer() 'Exibe imagem continua no pictubox Clipboard.Clear SendMessage mCapHwnd, WM_CAP_GRAB_FRAME, 0, 0 SendMessage mCapHwnd, WM_CAP_EDIT_COPY, 0, 0 Picture1.Picture = Clipboard.GetData DoEvents End Sub |
Para ativar o vídeo contínuo capturando toda a operação realizada pela WebCam usamos o código abaixo do botão : Ativar Vídeo Contínuo;
Private Sub
cmdAtivaVideoContinuo_Click() Timer1.Enabled = True Timer1.Interval = 50 End Sub |
Para capturar a imagem da webCam e exibir no controle PictureBox usamos o seguinte código:
Private Sub
cmdCapturaImagem_Click() 'Captura a imagem atual Clipboard.Clear SendMessage mCapHwnd, WM_CAP_GRAB_FRAME, 0, 0 SendMessage mCapHwnd, WM_CAP_EDIT_COPY, 0, 0 Picture1.Picture = Clipboard.GetData End Sub |
A seguir temos o código do botão que encerra a conexão com a webCam e o código que encerra a aplicação. Repetimos o código no evento Form_Terminate pois se o usuário encerrar o formulário a webCam também será desconectada:
Private Sub
cmdEncerraWebCam_Click() 'Desliga a câmera SendMessage mCapHwnd, WM_CAP_DRIVER_DISCONNECT, 0, 0 End Sub Private Sub cmdSair_Click() End End Sub Private Sub Form_Terminate() 'Desliga a câmera SendMessage mCapHwnd, WM_CAP_DRIVER_DISCONNECT, 0, 0 End Sub |
Executando o projeto teremos como resultado:
Testei e funcionou perfeitamente na minha webCam , uma Microsoft LifeCam.
Pegue o projeto aqui: WebCam.zip
O código pode ser melhorado evitando as repetições que usei por questão de simplicidade e tempo.
Até o próximo artigo ...
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 ? |
Gostou ?
Compartilhe no Facebook
Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a Objetos com VB .NET