elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Webcam
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Webcam  (Leído 4,762 veces)
magarcan

Desconectado Desconectado

Mensajes: 80


Ver Perfil
Webcam
« en: 10 Septiembre 2007, 00:14 am »

He encontrado un código en internet que me permite capturar el contenido de una webcam. El caso es que el video lo muestra en un PictureBox. El problema es que si capturo el video a 320x240 independientemente del tamaño del PictureBox el video se muestra a ese tamaño. ¿Conocéis alguna manera de redimensionarlo (vamos, hacerle un zoom)?
Gracias.

PD: os dejo el código de la captura por si os es útil.
Código:
'Declaraciones:
Const ws_visible = &H10000000
Const ws_child = &H40000000
Const WM_USER = 1024
Const WM_CAP_EDIT_COPY = WM_USER + 30
Const wm_cap_driver_connect = WM_USER + 10
Const wm_cap_set_preview = WM_USER + 50
Const wm_cap_set_overlay = WM_USER + 51
Const WM_CAP_SET_PREVIEWRATE = WM_USER + 52
Const WM_CAP_SEQUENCE = WM_USER + 62
Const WM_CAP_SINGLE_FRAME_OPEN = WM_USER + 70
Const WM_CAP_SINGLE_FRAME_CLOSE = WM_USER + 71
Const WM_CAP_SINGLE_FRAME = WM_USER + 72
Const DRV_USER = &H4000
Const DVM_DIALOG = DRV_USER + 100
Const PREVIEWRATE = 30

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lparam As Long) As Long
Private Declare Function capCreateCaptureWindow Lib "avicap32.dll" Alias "capCreateCaptureWindowA" (ByVal a As String, ByVal b As Long, ByVal c As Integer, ByVal d As Integer, ByVal e As Integer, ByVal f As Integer, ByVal g As Long, ByVal h As Integer) As Long

Dim hwndc As Long
'Declaro la función GetPixel
Private Declare Function GetPixel Lib "gdi32" ( _
    ByVal hdc As Long, _
    ByVal X As Long, _
    ByVal Y As Long) As Long

Private Sub Command1_Click()
'Código que realiza la captura de la imagen:

temp = SendMessage(hwndc, WM_CAP_EDIT_COPY, 1, 0)
Set Picture1.Picture = Clipboard.GetData
'Guardo la imagen para ver las dimensiones
SavePicture Picture1.Picture, "c:\imagen.jpg"

End Sub


Private Sub Form_Load()
'Código que activa la captura de imágenesse supone un formulario con 2 picture llamados "picture1" y "picture2")

hwndc = capCreateCaptureWindow("Ventana de Captura", ws_child Or ws_visible, 0, 0, Picture2.Width, Picture2.Height, Picture2.hwnd, 0)
If (hwndc <> 0) Then
temp = SendMessage(hwndc, wm_cap_driver_connect, 0, 0)
temp = SendMessage(hwndc, wm_cap_set_preview, 1, 0)
temp = SendMessage(hwndc, WM_CAP_SET_PREVIEWRATE, PREVIEWRATE, 0)
End If


End Sub


En línea

ranslsad


Desconectado Desconectado

Mensajes: 492


Dim Ranslsad as String * :P - Que Vicio!


Ver Perfil WWW
Re: Webcam
« Respuesta #1 en: 10 Septiembre 2007, 00:46 am »

Si lo que quieres es que se ponga el picturebox al mismo tamaño que la foto, nose.. por eso yo uso un "Image" es el otro apra poner fotos..
:D
Espero que te haya servido la chapuzilla :P

Salu2

Ranslsad


En línea

magarcan

Desconectado Desconectado

Mensajes: 80


Ver Perfil
Re: Webcam
« Respuesta #2 en: 10 Septiembre 2007, 00:53 am »

Ésto es una captura del programa. Lo que quiero hacer es que el video se me redimensione al tamaño del PictureBox
En línea

Arcangel


Desconectado Desconectado

Mensajes: 492


Is About Power...


Ver Perfil WWW
Re: Webcam
« Respuesta #3 en: 10 Septiembre 2007, 01:53 am »

Cámbialo por un control image, con el picturebox no hay forma de hacerlo, lo que te tocaría seria diseñar alguna función que redimencione la imagen, lo que si puedes hacer es con la propiedad autosize hacer que el control se ponga del tamaño de la imagen pero no alrevez, ahora el control image tiene una opcion strech que sirve para hacer que imagenes mas grandes se pongan del tamaño del control, no tengo idea si sirve a la inversa xD capas si, sino como te dije, te tocaria hacer una funcion que se encargue de eso, muy posiblemente encuentres algún modulo por ahí que lo haga, busca en google.

Arcangel
En línea

LeandroA
Moderador
***
Desconectado Desconectado

Mensajes: 760


www.leandroascierto.com


Ver Perfil WWW
Re: Webcam
« Respuesta #4 en: 10 Septiembre 2007, 02:04 am »

hola como no se va a poder con el picture? mira solo tenes que pintarlo sobre el

Picture1.AutoRedraw = True
Picture1.PaintPicture Clipboard.GetData, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight
Picture1.Refresh

Saludos
En línea

ranslsad


Desconectado Desconectado

Mensajes: 492


Dim Ranslsad as String * :P - Que Vicio!


Ver Perfil WWW
Re: Webcam
« Respuesta #5 en: 10 Septiembre 2007, 03:44 am »

Arcangel

La primera vez que te veo en el foro de programacion vb :P
Nose... as vuelto o algo o esque estas en otras secciones?
PD: perdon que no tiene nada que veer con el thread pero me entro la curiosidad :D

Salu2

Ranslsad
En línea

magarcan

Desconectado Desconectado

Mensajes: 80


Ver Perfil
Re: Webcam
« Respuesta #6 en: 10 Septiembre 2007, 12:42 pm »

He puesto ésto y no lo hace.
Código:
Picture1.AutoRedraw = True
Picture1.PaintPicture Clipboard.GetData, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight
Picture1.Refresh

De hecho ahora tengo un problema mçás grave. Ayer estuve probando algunos códigos de funciones con webcam en vb. Y resulta que ahora, al visualizarse la imagen va despacio, como a 4 frames por segundo. Me imagino que alguno de éstos programas me hayan cambiado la configuración del "WDM Image capture". ¿Alguno sabéis como poner la configuración por defecto?

EDITo: Ya he resuleto éste problema (el de los fps) el caso es que el programa que probé fijo los fps de captura a 8. Y el controlador de microsoft guarda la configuración, así que si no lo tocas te quedas con la última utilizada.
Gracias
« Última modificación: 10 Septiembre 2007, 12:51 pm por magarcan » En línea

ranslsad


Desconectado Desconectado

Mensajes: 492


Dim Ranslsad as String * :P - Que Vicio!


Ver Perfil WWW
Re: Webcam
« Respuesta #7 en: 10 Septiembre 2007, 15:17 pm »

He puesto ésto y no lo hace.
Código:
Picture1.AutoRedraw = True
Picture1.PaintPicture Clipboard.GetData, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight
Picture1.Refresh

Lo dicho hazlo con un Image... no con in PictureBox..
Se pone al tamaño de la imagen enseguida :D

Salu2

Ranslsad
En línea

magarcan

Desconectado Desconectado

Mensajes: 80


Ver Perfil
Re: Webcam
« Respuesta #8 en: 10 Septiembre 2007, 15:43 pm »

Por lo visto el uso de ésta API en visual basic obliga a utilizar PIctureBox, ya que cambiándolos por ImageBox, dice que no reconoce nosequé.

Habrá que fastidiarse...Si alguien tiene alguna otra idea que lo diga.
Gracias
En línea

TUNOVATO

Desconectado Desconectado

Mensajes: 56


Ver Perfil
Re: Webcam
« Respuesta #9 en: 11 Septiembre 2007, 18:00 pm »

'Obtiene frames , copia y adapta la escala a la ventana del picture1
   
Código:
SendMessage hWndCap, GET_FRAME, 0, 0
    SendMessage hWndCap, COPY, 0, 0
    SendMessage hWndCap, SET_SCALE, True, 0 'esto es lo que necesitas pero busca la api conrrespondiente o equivalente
« Última modificación: 11 Septiembre 2007, 18:03 pm por TUNOVATO » En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Webcam Ip
Software
hispapo 3 1,629 Último mensaje 3 Marzo 2013, 06:44 am
por Platanito Mx
Webcam en c/c++
Programación C/C++
ars1993 1 1,660 Último mensaje 20 Mayo 2013, 21:34 pm
por amchacon
Entrar a webcam
Hacking
Eern945s92 0 2,399 Último mensaje 4 Mayo 2020, 11:07 am
por Eern945s92
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines