IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau/Web Python Discussion :

Récupérer flux vidéo d'une caméra IP


Sujet :

Réseau/Web Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Etudiant ingénieur électronique et informatique industrielle
    Inscrit en
    Août 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Etudiant ingénieur électronique et informatique industrielle

    Informations forums :
    Inscription : Août 2015
    Messages : 28
    Par défaut Récupérer flux vidéo d'une caméra IP
    Bonjour,

    Je cherche à récupérer un flux vidéo d'une caméra IP avec un script Python. La connexion à cette caméra nécessite une authentification (username et mot de passe lors d'une connexion via un navigateur web).

    J'aimerais afficher ce flux vidéo dans une frame avec Python et OpenCV, j'ai essayé plusieurs scripts, mais aucun ne fonctionne (je n'arrive pas obtenir une frame, si cela ne plante, rien ne s'affiche, comme si il n'arrive pas à se connecter)

    Voici le dernier script que j'ai testé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    import numpy as np
    import cv2
    cap = cv2.VideoCapture('rtsp://user:pass@ip:port/mjpeg.cgi')
     
    while(True):
        ret, frame = cap.read()
     
        if ret == True:
            gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
            cv2.imshow('frame',gray)
     
            if cv2.waitKey(30) & 0xFF == ord('q'):
                break
        else:
            break
     
    cap.release()
    cv2.destroyAllWindows()
    Auriez-vous des solutions ?

    Merci!

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut
    Ca doit venir de ton flux réseau. Le code a l'air correct et devrait fonctionner avec un fichier vidéo local ou une caméra locale mais le cgi en rtsp ça m'étonnerait que ça fonctionne...

  3. #3
    Membre averti
    Homme Profil pro
    Etudiant ingénieur électronique et informatique industrielle
    Inscrit en
    Août 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Etudiant ingénieur électronique et informatique industrielle

    Informations forums :
    Inscription : Août 2015
    Messages : 28
    Par défaut
    Pourtant lorsque j'accède à l'url via un navigateur: http://192.168.1.28/mjpeg.cgi, je voit bien le flux vidéo en direct de ma caméra (branchée en ethernet, rien de plus basique)

    Je pensais à urllib.urlopen également, mais je n'ai pas réussi à le faire fonctionner avec une authentification (username/password).

    J'ai le même soucis (il passe directement dans le break), si je change le rstp par http

    Cela fonctionne en revanche si je passe par une boucle des images générées (mais quand même dommage alors que l'on pourrait accéder direct au flux vidéo)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    import urllib.request
    import cv2
    import numpy as np
     
    url='http://192.168.1.28/image/jpeg.cgi'
     
    while True:
        imgResp=urllib.request.urlopen(url)
        imgNp=np.array(bytearray(imgResp.read()),dtype=np.uint8)
        img=cv2.imdecode(imgNp,-1)
     
        # all the opencv processing is done here
        cv2.imshow('test',img)
        if ord('q')==cv2.waitKey(10):
            exit(0)

  4. #4
    Invité
    Invité(e)
    Par défaut
    C'est tout à fait ça : le cgi fonctionne en http, pas en rtsp.

  5. #5
    Membre averti
    Homme Profil pro
    Etudiant ingénieur électronique et informatique industrielle
    Inscrit en
    Août 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Etudiant ingénieur électronique et informatique industrielle

    Informations forums :
    Inscription : Août 2015
    Messages : 28
    Par défaut
    Et du coup en passant par le http et les identifiants, cela ne fonctionne pas non plus (cf mon edit plus haut), mais cela fonctionne avec une boucle d'images

  6. #6
    Membre averti
    Homme Profil pro
    Etudiant ingénieur électronique et informatique industrielle
    Inscrit en
    Août 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Etudiant ingénieur électronique et informatique industrielle

    Informations forums :
    Inscription : Août 2015
    Messages : 28
    Par défaut
    Up!

    Quelqu'un aurait une idée pour récupérer le flux vidéo plutôt que de faire une boucle sur les images ?
    Merci!

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 778
    Par défaut
    Salut,

    Citation Envoyé par Share45 Voir le message
    Mais qui ne fonctionne justement pas. Le code de mon premier message passe directement dans le break et donc je n'arrive pas à le récupérer.
    Essayez d'être un peu rigoureux, vous avez écrit:

    Citation Envoyé par Share45 Voir le message
    Cela fonctionne en revanche si je passe par une boucle des images générées (mais quand même dommage alors que l'on pourrait accéder direct au flux vidéo)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    import urllib.request
    import cv2
    import numpy as np
     
    url='http://192.168.1.28/image/jpeg.cgi'
     
    while True:
        imgResp=urllib.request.urlopen(url)
        imgNp=np.array(bytearray(imgResp.read()),dtype=np.uint8)
        img=cv2.imdecode(imgNp,-1)
     
        # all the opencv processing is done here
        cv2.imshow('test',img)
        if ord('q')==cv2.waitKey(10):
            exit(0)
    et il n'y a même pas de "break".

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,

    Essayez d'être un peu rigoureux, vous avez écrit:

    et il n'y a même pas de "break".

    - W
    Salut
    Il a dit dans le code de son premier message. Et dans le code de son premier message, il y a bien des "break".
    Essayez d'être un peu rigoureux.

  9. #9
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 778
    Par défaut
    Citation Envoyé par SimonDecoline Voir le message
    Il a dit dans le code de son premier message. Et dans le code de son premier message, il y a bien des "break".
    Essayez d'être un peu rigoureux.
    Certes mais le PO bien bossé depuis puisqu'il a même trouvé un code qui fonctionne (et qui remplace les essais précédents à priori)n et puisqu'il a trouvé une solution, çà serait bien de préciser ce qui ne fonctionne pas (ou ce qu"il souhaite améliorer).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Enregistrer le flux vidéo d'une caméra Axis
    Par nesrine18 dans le forum Multimédia
    Réponses: 2
    Dernier message: 09/03/2012, 11h05
  2. Comment récupérer le flux vidéo d'une caméra IP ?
    Par MaTHieU_ dans le forum Débuter
    Réponses: 3
    Dernier message: 14/10/2011, 16h06
  3. Capturer le flux vidéo d'une caméra
    Par Jim_Nastiq dans le forum OpenCV
    Réponses: 12
    Dernier message: 02/05/2007, 11h48
  4. Récupérer un flux vidéo sur une MIDlet
    Par barcelona dans le forum Java ME
    Réponses: 1
    Dernier message: 11/10/2006, 20h02
  5. [C#]visualiser le flux vidéo d'une caméra Axis
    Par nokta dans le forum Windows Forms
    Réponses: 6
    Dernier message: 21/11/2005, 19h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo