C ++ OpenCV Bild sendet über Socket

8

Ich versuche, einen Streaming-Dienst mit OpenCV und Sockets zu implementieren. Die Serverseite lädt ein gegebenes Bild und sendet es an den Client, der es über den Socket empfängt und anzeigt. Ich habe jedoch eine Menge Probleme, die Daten des Bildes zu senden und es auf der Clientseite zu rekonstruieren. Dies ist der Code, den ich bisher gemacht habe:

Bildsender:

%Vor%

Bildempfänger:

%Vor%

Al Ich bekomme auf der Client-Seite ein schwarzes Bild, sonst nichts. Irgendwelche Hilfe?

    
user2938976 01.12.2013, 16:41
quelle

5 Antworten

12

Get Mat.data und direkt an den Socket senden, die Datenreihenfolge ist BGR BGR BGR .... Auf der Empfängerseite wird davon ausgegangen, dass Sie die Größe des Bildes kennen. Nach dem Empfang weisen Sie einfach den empfangenen Puffer (BGR BGR ... array) einer Mat.

zu

Kunde: -

%Vor%

Server: -

%Vor%     
Haris 02.12.2013, 05:07
quelle
3
%Vor%

Diese Aussage gibt Fehler in Visual Studio 12. Es sagt, dass .. ERROR: Argument vom Typ "uchar *" ist nicht kompatibel mit Parameter vom Typ "const char *" bei "" frame.data "".

    
user3165224 06.01.2014 11:32
quelle
1

Pufferüberlauf Und ich bin mir nicht sicher, ob das Format und die Größe des Bildes gleich sind - & gt; Sie sollten Ihre Mat ehrlich serialisieren, etwas wie hier .

    
user1190294 01.12.2013 17:22
quelle
1

Haris 'Antwort ist richtig und hat für mich funktioniert. Anstelle des Servercodes (Konstruieren eines Bildes aus UCHAR-Daten) können Sie jedoch auch die kürzere Form verwenden:

%Vor%     
Pardis 26.07.2015 09:31
quelle
1

In Microsoft Visual Studio 2012 habe ich eine rote Linie unter imgSize in SockData [imgSize] Sprichwort Ausdruck muss einen konstanten Wert haben. Ich habe dann int imgSize zu const int imgSize geändert. Es zeigt mir immer noch das gleiche Problem.

%Vor%     
user5473110 16.06.2016 18:30
quelle

Tags und Links