Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Camaras instaladas en mi pc

Estas en el tema de Camaras instaladas en mi pc en el foro de Visual Basic clásico en Foros del Web. Hola como están? bueno tengo un sistema desarrollado en vb6 para un consultorio odontologico. Ahora lo que necesito es poder acceder a las imágenes de ...
  #1 (permalink)  
Antiguo 01/12/2009, 12:43
 
Fecha de Ingreso: noviembre-2007
Mensajes: 133
Antigüedad: 16 años, 5 meses
Puntos: 0
Camaras instaladas en mi pc

Hola como están? bueno tengo un sistema desarrollado en vb6 para un consultorio odontologico. Ahora lo que necesito es poder acceder a las imágenes de una webcam para capturar imágenes de los pacientes y si bien esto pude hacerlo buscando ejemplos en internet, lo que no logro hacer es que el usuario del sistema pueda elegir de que dispositivo capturar estas imágenes ya que la foto de la cara del paciente puedo sacarla de la webcam pero es probable que necesite trabajar con una cámara intraoral para fotografiar los trabajos hechos por el odontologo.
En conclusión lo que necesito es crear un panel o algo así donde aparezcan todas las cámaras que tengo instalas en la pc y poder elegir cual usar según sea el caso.
Ademas me gustaría poder usar el zoom de las cámaras.
En los ejemplos que vi solo puedo capturar de una webcam.
La idea seria cargar en un combo o cualquier otro control las camaras instalas, que el usuario pueda elegir una de ellas e iniciarla para tomar la foto
muchas gracias
  #2 (permalink)  
Antiguo 02/12/2009, 08:44
 
Fecha de Ingreso: noviembre-2007
Mensajes: 133
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Camaras instaladas en mi pc

Bueno me contesto solo, encontre algunos ejemplos y me incline por uno.
Usando la funcion capcreatecapturewindow



en un modulo tengo esto


Código Modulo bas:
Ver original
  1. Global Const WM_USER = 1024
  2. Global Const wm_cap_driver_connect = WM_USER + 10
  3. Global Const wm_cap_set_preview = WM_USER + 50
  4. Global Const WM_CAP_EDIT_COPY = WM_USER + 30
  5. Global Const COPY = 1054
  6. Global Const WM_CAP_SET_PREVIEWRATE = WM_USER + 52
  7. Global Const WM_CAP_DRIVER_DISCONNECT = WM_USER + 11
  8. Global Const WM_CAP_DLG_VIDEOFORMAT = WM_USER + 41
  9. Global Const WM_CAP_DLG_VIDEOCONFIG = WM_USER + 42
  10. Global Const WM_CAP_SET_SCALE = WM_USER + 53
  11. 'Api de 16 bits
  12. 'Declare Function SendMessage Lib "User" (ByVal hWnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, lParam As Any) As Long
  13. 'Api para crear la ventana de captura
  14. 'Declare Function capCreateCaptureWindow Lib "avicap.dll" (ByVal lpszWindowName As String, ByVal dwStyle As Long, ByVal x As Integer, ByVal y As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal hwndParent As Integer, ByVal nID As Integer) As Long
  15. 'Declare Function DestroyWindow Lib "User" (ByVal hndw As Integer) As Integer
  16. 'Api para crear la ventana de captura
  17. Public Declare Function capCreateCaptureWindow Lib "avicap32.dll" _
  18.     Alias "capCreateCaptureWindowA" ( _
  19.     ByVal lpszWindowName As String, _
  20.     ByVal dwStyle As Long, _
  21.     ByVal x As Long, _
  22.     ByVal y As Long, _
  23.     ByVal nWidth As Long, _
  24.     ByVal nHeight As Long, _
  25.     ByVal hwndParent As Long, _
  26.     ByVal nID As Long) As Long
  27.  
  28. Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( _
  29.     ByVal hwnd As Long, _
  30.     ByVal wMsg As Long, _
  31.     ByVal wParam As Long, _
  32.     lParam As Any) As Long
  33.  
  34. Public Declare Function DestroyWindow Lib "user32" (ByVal hndw As Long) As Boolean
  35. Public hwdc As Long
  36. Public startcap As Integer


y en el form para iniciar la cam tengo esto

Código vb:
Ver original
  1. Dim temp As Long
  2. Dim hWndc As Long
  3.  
  4.  
  5.  
  6.   hwdc = capCreateCaptureWindow("CapWindow", ws_child Or ws_visible, 0, 0, 340, 240, Picture1.hwnd, 0)
  7.  
  8.  
  9. 'esto conecta el dispositivo.
  10.  
  11.   If (hwdc <> 0) Then
  12.     temp = SendMessage(hwdc, wm_cap_driver_connect, 0, 0)
  13.     'esto hace que la imagen recibida por el dispositivo se ajuste
  14.    'al tamaño de la ventana de captura (justo lo que yo buscaba)
  15.   temp = SendMessage(hwdc, wm_cap_set_preview, 1, 0)
  16.    'esto setea la tasa de transferencia (vease MDSN)
  17.    temp = SendMessage(hwdc, WM_CAP_SET_PREVIEWRATE, 30, 0)
  18.     'esto activa el modo PREVIEW para ver video lo cual es suficiente
  19.    'para tener movimiento en mi programita
  20.    temp = SendMessage(Me.hwnd, WM_CAP_SET_SCALE, True, 0)
  21.     'esto hace que la imagen recibida por el dispositivo se ajuste
  22.    'al tamaño de la ventana de captura (justo lo que yo buscaba)
  23.    DoEvents
  24.     startcap = True
  25.     Picture1.Visible = True
  26.     boton.Caption = "Detener"
  27.     Else
  28.     MsgBox "No hay Camara Web", 48, "Error"
  29.   End If



Funciona bien pero el problema es que la imagen que me muestra tiene mucho zoom y no se como manejarlo, ademas el foco de la cam apunta hacia el lugar que indico pero me imagen que me trae es de unos 10 cmts a la izquierda. Probé esto mismo con otra cam en otro pc pero pasa lo mismo.
Si alguien me dice como controlar eso seria buenísimo

Muchas gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:27.