p
u
b
l
i
c
i
t
é
publicité
  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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : 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
    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 : 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
    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

Discussions similaires

  1. Envoyer image par Mail
    Par soft_57 dans le forum JavaScript
    Réponses: 4
    Dernier message: 31/05/2011, 11h05
  2. Envoie image par Socket
    Par hussein47 dans le forum VB.NET
    Réponses: 13
    Dernier message: 27/08/2009, 19h28
  3. Envoyer image par i-frame avec onchange
    Par TigerCX dans le forum JavaScript
    Réponses: 0
    Dernier message: 25/08/2009, 15h45
  4. envoye fichier par socket
    Par ac/dc dans le forum Réseau
    Réponses: 3
    Dernier message: 01/12/2006, 20h46
  5. Transfert d'une image par socket stream
    Par francky23012301 dans le forum Langage
    Réponses: 1
    Dernier message: 31/10/2005, 16h06

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