Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [VB6] screen webcam a tempo

    Ho creato un rpogrammino che ogni tot di secondi salva delel imamgini dalla webcam.
    Precisamente scatta 10 foto dis eguito a distanza di 5 secondi (tempo modificbile a mio piacimento).
    Il programam funziona correttamente,a patto che non venga ridotto ad icona, in tal caso le immagini scattate sono tutte uguali, e' come se quando fosse ridotto ad icona non venisse aggiornata la picture box con i dati in entrata dalla webcam.
    Avete qualche idea di cosa possa essere?

    Il codice con cui inserisco nelal picturebox l'immagine prveniente dalla webcam e' questo:

    codice:
    Private Sub OpenPreviewWindow()
    
        ' Open Preview window in picturebox
        hHwnd = capCreateCaptureWindowA(iDevice, WS_VISIBLE Or WS_CHILD, 0, 0, 640, 480, picCapture.hwnd, 0)
    
        ' Connect to device
        If SendMessage(hHwnd, WM_CAP_DRIVER_CONNECT, iDevice, 0) Then
    
            'Set the preview scale
            SendMessage hHwnd, WM_CAP_SET_SCALE, True, 0
    
            'Set the preview rate in milliseconds
            SendMessage hHwnd, WM_CAP_SET_PREVIEWRATE, 66, 0
    
            'Start previewing the image from the camera
            SendMessage hHwnd, WM_CAP_SET_PREVIEW, True, 0
    
            ' Resize window to fit in picturebox
            SetWindowPos hHwnd, HWND_BOTTOM, 0, 0, picCapture.ScaleWidth, picCapture.ScaleHeight, SWP_NOMOVE Or SWP_NOZORDER
    
            cmdSave.Enabled = True
            cmdStop.Enabled = False
        Else
    
            ' Error connecting to device close window
            DestroyWindow hHwnd
    
            cmdSave.Enabled = False
        End If
     End Sub
    Spero in un vostro aiuto
    ciao a tutti

  2. #2
    ho provato anche impostando il form come sempre in primo piano, ma se perde il focus (anche rimanendo in primo piano, per intendersi la barra del titolo non e' piu' scura perchè avendo clicccato su un altra finestra è diventata scura quela) il programma salva sempre la stessa immagine.

    Ho provato anche inserendo il programma nella tray bar nulla, non si risolve nemmeno cosi'

  3. #3
    RISOLTO:
    Non sto a spiegare come perchè è lungo, comunque ho dovuto inserire un timer che gestisse il refresh invece di:

    SendMessage hHwnd, WM_CAP_SET_PREVIEWRATE, 66, 0

    inoltre ho dovuto usare una costante dell'api che prima non utilizzavo:

    Const WM_CAP_GET_FRAME As Long = WM_CAP + 60

    dove WM_CAP è 1024 (&H400)

    per realizzare tuto ciò ho dato una sbirciata a questo codice:
    http://www.planet-source-code.com/vb...58115&lngWId=1

    l'unico programma (che sono riuscito a trovare io) che utilizzasse la webcam fatto in vb che non avesse il problema dell'immagine bloccata se ridotto ad icona.

    ciao a tutti

  4. #4

    [VB6]cattura screen webcam con sendmessage ed errore clipboard [IMP]

    Ciao a tutti, sto creando un programma in vb6 che ogni tot di tempo salva degli screen provenienti da una webcam.
    Per fare ciò utilizzo anche la clipboard.
    Ora se un altra applicazione utuilizza la clipboard (basta anche solo che io utilizzi il copia incolla) durante l'esecuzione del programma mi appaer il seguente errore:
    521 - can't open clipboard.

    Ora volevo sapere se esiste un modo per eitare ciò.
    Provo ad inserire qualche linea di codice per chiarirvi un po' le idee:

    codice:
        hHwnd = capCreateCaptureWindowA(iDevice, WS_VISIBLE Or WS_CHILD, 0, 0, 640, 480, picCapture.hwnd, 0)
        DoEvents: SendMessage hHwnd, WM_CAP_DRIVER_CONNECT, iDevice, 0 'Capture from webcam
    
            Clipboard.Clear
            SendMessage hHwnd, WM_CAP_GET_FRAME, 0, 0 'Capture frame from webcam
            SendMessage hHwnd, WM_CAP_EDIT_COPY, 0, 0 'Copy frame
            picCapture.Picture = Clipboard.GetData 'Paste captured frame from clipboard
            Clipboard.Clear 'Clear clipboard
    Mi basterebbe anche trovare un metodo alternativo che non utilizzi la clipboard.
    spero che rusciate a darmi una mano
    ciao a tutti

  5. #5
    Potresti provare a crearti un file .bmp su cui incollare l'immagine. Se la directory è vuota ti crea il primo file che potrai chiamare "Captured_hh_mm_ss_dd_mm_yy.bmp" dove hh, mm, ss sono ore, minuti e secondi e dd, mm, yy sono giornon mese e anno della creazione; in una variabile ti memorizzi il now() della creazione del file.
    Se la directory non è vuota, vuol dire che è già presente un file e quindi effettui la creazione di un nuovo file, sempre con la sintassi che ti ho detto prima, salvi in una bariabile il now() e cancelli il precedente. per poter cancellare il precedente prova a giocare sulla data di creazione (sempre se è un parametro accessibile tramite codice vb6) oppure sul nome del file stesso. In questo caso il procedimento sarebbe un pochino più contorto ma sicuramente ne esci fuori...cancelli il file il cui nome NON ha al suo interno gli stessi hh,mm,ss,dd,mm,yy della variabile now() (si presuppone che xx=now(), tramite le funzioni left, right, mid venga suddivisa in hh=left(xx,2) mm=mid(xx,4,7).....)
    E' una idea che mi è venuta adesso..in verità non mi sono mai confrontato con un problema simile. magari qualcun'altro saprà essere più preciso!
    spero di essere stato chiaro comunque. nel caso così non fosse segnala i punti oscuri del mio reply!!

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463

    Moderazione

    Ho unito le discussioni visto che, sostanzialmente, si tratta della naturale prosecuzione del problema già posto in precedenza.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.