Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » can not convert

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
13.08.2009, 10:06 Uhr
~Jann
Gast


Hallo

ich habe hier ein Video-stream mit client und server..dabei übertrage ich meine Webcam
(mittels OpenCV)

ich möchte nun mein "frame" übertragen (über Socket) nun bekomme ich hier einen Fehler!
can not convert IplImage in char* und can not convert [*] [32] in char*
also die fehler sind im recv und send , da die Fkt char* erwarten, aber meine werte das nicht sind.
-->Anfngerfehler, aber ich komm hier nicht weiter

server

C++:
   char buf[32];
   IplImage *frame;
   CvCapture *capture;
   WSADATA wsaData;
   SOCKET socket;

  ...
   while( cvWaitKey(1) ){
       if( !(frame = cvQueryFrame(capture)) ) return(-1);
       send(socket, frame, 100, 0);
       while(recv(socket, &buf, 2, 0) != 2) Sleep(0);
       send(socket, frame->imageData, 123456, 0);
       while(recv(socket, &buf, 2, 0) != 2) Sleep(0);
       cvShowImage("result", frame);
       Sleep(500);
   }



client

C++:
   IplImage frame;
   char data1[123456], data2[123456];

  ...
   while( cvWaitKey(1) ){
       while(recv(network->socket, (char*)&frame, 100, 0) != 100);
       send(network->socket, "geht", 2, 0);
       while(recv(network->socket, data1, 123456, 0) != 123456);
       frame.imageData = &data1;
       cvShowImage("result", &frame);
       send(network->socket, "geht", 2, 0);
       Sleep(0);
   }



dies funzt auch nicht richtig ->frame.imageData = &data1;

P.S. Ich nutze Dev-c++ mit OpenCV unter Win Vista
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
13.08.2009, 12:10 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)



Zitat von ~Jann:

recv(socket, &buf, 2, 0)


das & muss jeweils weg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
13.08.2009, 17:31 Uhr
0xdeadbeef
Gott
(Operator)


Wenn ich das richtig sehe, ist OpenCV ein komplexer Datentyp mit Zeigermembern und abgeleitet von einer anderen Klasse (was bedeutet, dass er eine vtable hat). Es ist zwar möglich, diesen in einen char* zu casten (reinterpret_cast sollte das können), aber es ist eine selten dämliche Idee, zu versuchen, ihn flach über's Netzwerk zu senden. Die Zeiger zeigen am anderen Ende nirgendwohin, und ob die vtable an der selben Stelle im Speicher liegt, ist Glückssache.

Naja, ich schätze, wenn du dich sehr gut mit PE auskennst und lange genug mit Relocations rumspielst, könne man das mit der vtable hinkriegen, aber es wäre ein unglaublich dreckiger Hack. In jedem Fall musst du das Objekt serialisieren, bevor du sie über's Netz schicken kannst, und am anderen Ende halt wieder zusammenpfriemeln. Oder du arbeitest mit einem ORB.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
14.08.2009, 01:09 Uhr
~jann
Gast


Hey ..danke soweit.. ich komme an dieser stelle wohl erst mal nicht weiter!

Das mt dem cast ist schon mal nen anfang
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: