USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Capturar foto com webcam
CSRocha
BRASILIA
DF - BRASIL
Postada em 01/10/2008 01:12 hs            
Já pesquisei e peguei aqui nas dicas uma rotina, que não funcionou, dá um erro nas propriedades do controle.

Pequei também um exemplo do macoratti, que só usa API, mas também não deu certo, congela e trava o VB. Minha webcam, uma DLink C310 funciona sem problemas.

Alguém tem um exemplo funcionando que pudesse me passar?
     
Treze
Pontos: 2843 Pontos: 2843
SÃO VICENTE
SP - BRASIL
Postada em 01/10/2008 09:20 hs            
para coisas simples, este código a seguir funciona perfeito:
 
'(((( COLOQUE UMA PICTURE BOX NO SEU FORM ))))))
'(((( COLOQUE UM BOTÃO COMMAND1 NO SEU FORM )))))
 
'DECLARACOES
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
 
Private Sub Form_Load()
'Inicia a câmera
mCapHwnd = capCreateCaptureWindow("My Own Capture Window", 0, 0, 0, 320, 240, Me.hwnd, 0)
SendMessage mCapHwnd, WM_CAP_DRIVER_CONNECT, 0, 0
End Sub
 
Private Sub Form_Terminate()
'Desliga a câmera
SendMessage mCapHwnd, WM_CAP_DRIVER_DISCONNECT, 0, 0
End Sub

Private Sub Command1_Click()
'Captura a imagem atual (PODERIA SER COLOCADO NUM TIMER PARA IMAGEM CONTINUA)
Clipboard.Clear
SendMessage mCapHwnd, WM_CAP_GRAB_FRAME, 0, 0
SendMessage mCapHwnd, WM_CAP_EDIT_COPY, 0, 0
Picture1.Picture = Clipboard.GetData
End Sub
 
     
CSRocha
BRASILIA
DF - BRASIL
Postada em 01/10/2008 09:47 hs            
Valeu, Treze, mas acho que tenho que colocar o timer, pois no exemplo, a imagem não aparece, só depois que clico no botão para capturar.

O que o timer faz exatamente? E como colocar no projeto? Pode me passar esse código, para eu testar?
     
Treze
Pontos: 2843 Pontos: 2843
SÃO VICENTE
SP - BRASIL
Postada em 01/10/2008 10:00 hs            
é Simples tanta assim
 
Private Sub Timer1_Timer()
Clipboard.Clear
SendMessage mCapHwnd, WM_CAP_GRAB_FRAME, 0, 0
SendMessage mCapHwnd, WM_CAP_EDIT_COPY, 0, 0
Picture1.Picture = Clipboard.GetData
End Sub
 
lógico mude a propriedade interval do timer para 1
 
acrescente mais uma picturebox no seu form e cole no botão o seguinte:
 
Private Sub Command1_Click()
Picture2.Picture = Picture1.Picture
End Sub
 
Veja se funciona como deseja
 
 
     
CSRocha
BRASILIA
DF - BRASIL
Postada em 01/10/2008 10:11 hs            
Ok, valeu mesmo...

eu tinha pego o exemplo do Macoratti e fiz esas alterações quase como vc passou. Estava congelando ainda, mas depois que ajustei com o teu código, deu certo.

Mais uma pra biblioteca...


     
Página(s): 1/1    

CyberWEB Network Ltda.    © Copyright 2000-2026   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página