Problema a mostrare un video modificato in realtime

di il
4 risposte

Problema a mostrare un video modificato in realtime

Ciao a tutti,
Premetto che vengo da un mondo un pochetto diverso (anche se sono sempre consulente informatico) e molte cose le ho imparate da autodidatta e rubando qua e la da github

ho creato con python un'applicazione web che mi permette di modificare un video in tempo reale rendendo "trasparenti" gli oggetti rossi.
In sintesi come funziona:
- Ogni 5 secondi scatta una foto che diventerà il background
-  trova gli oggetti rossi nella registrazione
- elimina questi oggetti
- al posto dell'oggetto mostra l'immagine di background.

Questo codice parte cliccando su un bottone in una pagina html e mi mostra solo il video modificato.
In locale funziona, e questo perché l'acquisizione del video la faccio serverside (utilizzando CV - cv2.VideoCapture) ma provando a mettere online l'applicativo (su pythonanywhere.com) non funziona. 
Ho provato ad acquisire l'immagine lato client con js getUserMedia ma non riesco a sfruttarlo come dovrei.
In questo caso ricevo mi parte si la cam, ma non mi parte più il programma.


Avete suggerimenti su come fare?
Nel caso posso tranquillamente condividere il codice. Io ne sto uscendo pazzo e non riesco a vedere una soluzione

Grazie mille!

4 Risposte

  • Re: Problema a mostrare un video modificato in realtime

    21/08/2023 - capanos ha scritto:


    In locale funziona, e questo perché l'acquisizione del video la faccio serverside (utilizzando CV - cv2.VideoCapture) ma provando a mettere online l'applicativo (su pythonanywhere.com) non funziona. 

    “Non funziona” ovvero?

  • Re: Problema a mostrare un video modificato in realtime

    Hai ragione, dettaglio un po' meglio

    Praticamente caricando l'applicativo su pythonanywhere, cv2.VideoCapture mi da problemi in quanto prova ad  accedere alla webcam del server e no alla web dell'utente finale.

    infatti mi restituisce questo errore

    /io/opencv/modules/videoio/src/cap_v4l.cpp (889) open VIDEOIO(V4L2:/dev/video0): can't open camera by index

    Da FE infatti non mi chiede neanche di se voglio dare i permessi di accesso alla cam e utilizzarli perché cv lavora lato server e non lato client.

    Ho provato ad inserire nell'html uno script Js con getUserMedia in modo che mi faccia accedere alla cam ma da qui in poi non so proseguire.
    Praticamente, credo, dovrei ottenere il video in input client side, lavorarlo lato server e rimandarlo a FE.
    è questo primo passaggio (ottenere il video e passarlo al server per la lavorazione) che mi blocca

  • Re: Problema a mostrare un video modificato in realtime

    21/08/2023 - capanos ha scritto:


    Ho provato ad inserire nell'html uno script Js con getUserMedia in modo che mi faccia accedere alla cam ma da qui in poi non so proseguire.

    Ok, mi pare di capire che la problematica sia molto più ampia di quella prospettata, ovvero che non si tratti di un errore ma di un necessario cambio di implementazione per fare in modo che l'applicazione sul server non acquisisca il video tramite webcam locale (ossia quella del server), ma che lo riceva come flusso da una pagina che gira nel browser e lo acquisisce come fonte video dalla webcam attivata dal browser stesso, sul client.

    Qui le cose si complicano, nel senso che dal punto di vista logico puoi senz'altro conservare e riutilizzare quanto hai implementato per l'elaborazione video, ma per trasferirlo dal client devi prendere in esame uno dei tanti framework disponibili per Python e adatti alla creazione di applicazioni Web vere e proprie (es. Flask, Django, ecc.).

    Forse facendo una ricerca mirata con le parole chiavi giuste puoi trovare materiale a riguardo.

    Non mi è ancora capitato di dover trasferire video in tempo reale, quindi anche io dovrei indagare per poter proporre soluzioni valide ed efficaci, purtroppo. :|

    Ma se confermi lo scenario, magari qualcun altro può essere d'aiuto in questo senso.

  • Re: Problema a mostrare un video modificato in realtime

    Confermo quanto dici tu!
    Io come framework sto usando Flask. 
    Avendo sempre lavorato su immagini non ho mai avuto questo problema (le salvavo nella folder static e risultavano utilizzabili da FE).

    Video in realtime mi sono accorto che, meledetto io che ci ho provato, è totalmente diverso

Devi accedere o registrarti per scrivere nel forum
4 risposte