+ Répondre à la discussion
Affichage des résultats 1 à 2 sur 2
  1. #1
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    décembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : décembre 2012
    Messages : 2
    Points : 0
    Points
    0

    Par défaut OpenCv envoyer image par socket

    Bonjour,
    Je suis nouveau sur le forum et je viens vous solliciter actuellement, je n'arrive pas à envoyer par socket une image capturé sur une webcam par opencv (j'y arrive uniquement avec des chaines de caractères).
    J'ai donc ce code suivant pour récupérer les images et les afficher :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import cv2.cv as cv
    import time
    import os
     
    cv.NamedWindow("camera", 1)
     
    capture = cv.CaptureFromCAM(0)
     
    while True:
        img = cv.QueryFrame(capture)
        cv.ShowImage("camera", img)
        if cv.WaitKey(10) == 27:
            break
    cv.DestroyAllWindows()
    J'ai regardé sur pas mal de forum et d'après ce que j'ai compris il faut mettre l'image dans un buffer puis envoyer celui ci grâce au socket mais je ne vois pas du tout comment faire. Ca parlait aussi de IplImage mais qu'est ce que c'est ?
    Merci d'avance

    Benq360

  2. #2
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    décembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : décembre 2012
    Messages : 2
    Points : 0
    Points
    0

    Par défaut

    Donc voila j'ai reussi a envoyer des images puis les enregistre avec les codes suivant :
    - serveur :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    #Programme serveur
    import socket
    import cv2.cv as cv
    import time
    import os
    import numpy
    import base64
    from base64 import b64encode
     
     
    capture = cv.CaptureFromCAM(0)
     
    HOST = ''                 
    PORT = input("Port du serveur : ")
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    Nombre_de_frame = input("Nombre de frame a envoyer : ")
    nb_frame_temp = 0
    print 'Attente d une connexion'
    s.bind((HOST, PORT))
    s.listen(1)
    connection, addr = s.accept()
    print 'Connection par : ', addr
    while nb_frame_temp != Nombre_de_frame:
        img = cv.QueryFrame(capture)
        data = b64encode(cv.EncodeImage(".png", img).tostring())
        longueur = len(data)
        print 'Longueur chaine :', longueur
        longueur_envoi = str(longueur)
        connection.sendall(longueur_envoi)
        attente = ''
        while attente == '':
            attente = connection.recv(512)
        #print 'envoi en cours'
        connection.sendall(data)
        #print 'envoi reussi'
        nb_frame_temp = nb_frame_temp + 1
     
    connection.close()
    - client :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    #Programme client
    import cv2.cv as cv
    import time
    import os
    import socket
    import numpy
    import base64
    from base64 import b64encode
     
    HOST = raw_input("IP du serveur : ")    
    PORT = input("Port du serveur : ")         
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((HOST, PORT))
    nom_image = 0
    while True:
        reception_longueur = 0
        while reception_longueur == 0:
            reception_longueur = s.recv(1024)
        reception_longueur = int(reception_longueur)
        print 'Longueur chaine : ',reception_longueur
        s.send('GO')
        data = s.recv(reception_longueur)
        #print data
     
        image_recu = (data.decode('base64'))
        nom_image = str(nom_image)
        nom_image_enreg = nom_image + ".png"
        fichier = open(nom_image_enreg,"wb")
        nom_image = int(nom_image)
        nom_image = nom_image + 1
        fichier.write(image_recu)
        fichier.close()
     
        #img = cv.DecodeImage(image_recu, 0)
     
        #cv.NamedWindow("camera", 1)
        #cv.ShowImage("camera", img)
     
    s.close()
    Mais là j'enregistre les images mais c'est pas ce que je veux, je voudrais les afficher avec : cv.ShowImage mais je n 'y arrive pas, comment dois-je faire ?
    Cordialement

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •