Précédent   Forum du club des développeurs et IT Pro > Autres langages > Python & Zope > Général Python
Général Python Forum d'entraide sur les fondamentaux du langage Python, syntaxe, POO, bibliothèque standard, ...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 18/12/2012, 22h35   #1
Benq360
Invité de passage
 
Homme David Lejeune
Étudiant
Inscription : décembre 2012
Messages : 2
Détails du profil
Informations personnelles :
Nom : Homme David Lejeune
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
Benq360 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 19h47   #2
Benq360
Invité de passage
 
Homme David Lejeune
Étudiant
Inscription : décembre 2012
Messages : 2
Détails du profil
Informations personnelles :
Nom : Homme David Lejeune
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
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
Benq360 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 07h13.


 
 
 
 
Partenaires

Hébergement Web