Bild senden via TCP
Ich versuche, Daten zu senden, der das aufgenommene Bild per TCP-Socket mit python (raspberry PI ).
TCP-Server (QT) läuft auf der anderen Maschine und versucht, das Bild Lesen und anzeigen in QLabel.
Habe ich noch nie programmiert in python und Total verstehe nicht, was ich falsch mache. Ich verbringe viel Zeit ( Tagen ) zur Deckung der Laufenden Fehler und schließlich kam zu dem Punkt, dass ich Sie überhaupt ausführen kann. Aber die Daten was ich erhalte ist der Schrott.
Unten Programm zeigt video-sep-Fenster auf raspberry PI und schicken einzelne aufgenommene Bild via socket.
import cv2.cv as cv
import cv2
import time
from socket import socket
import sys
import numpy
cv.NamedWindow("camera",cv.CV_WINDOW_AUTOSIZE)
capture = cv.CaptureFromCAM(0)
sock = socket()
sock.connect(('192.168.0.2', 5001))
sock.send('Pi - Hallo')
while True:
frame = cv.QueryFrame(capture)
cv.ShowImage("camera", frame)
mat = cv.GetMat(frame)
buf = [1,90]
image = cv.CreateImage (cv.GetSize (frame), 8, 3)
nuImage = numpy.asarray(frame[:,:])
imgencode = cv2.imencode('.png', nuImage, buf)
data = numpy.array(imgencode)
stringData = data.tostring()
sock.send('Pi - Sending image data');
sock.send( stringData );
if cv.WaitKey(10) == 27:
break
sock.send('Pi - closing connection')
sock.close()
gut, wenn Sie empfangen "piece of junk" es ist einfach eine Codierung & decoding problem. versuchen, zu Debuggen und zu sehen.
InformationsquelleAutor misiek303 | 2013-12-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Daten, die Sie empfangen, ist nicht Schrott. Es ist das senden von Daten. Aber es ist senden in bytes. So, am empfangenden Ende müssen Sie zum konvertieren von Byte in string vor der Verarbeitung der Daten. Lesen diese für ein besseres Verständnis des Sendens und Empfangens von Daten in der socket-Programmierung und Lesen diese für Methoden verwendet in der aktuellen version von opencv.
Auch Ihre nicht brauchen, um über cv um diese Aufgabe zu erfüllen. Aktuelle version von opencv stellt Methoden zu tun, also nur durch die
import cv2
.Den folgenden funktionierenden code, obwohl es die Kommunikation vereinfacht.
client.py
server.py
Kann ich Sie Fragen, ob es eine effiziente Möglichkeit zum senden Bild via socket? und Buchse gut für eine große Anzahl von Bild? (sorry, ich bin neu auf Buchse)
Seine seit 4 Jahr, da dies geschrieben und ich bin nicht sicher, dass, wenn einige neue, effiziente Methode entwickelt.
InformationsquelleAutor nuke1010