@Bizman

Как отправить Iplimage и собрать его на принимающей сторое используя протокол UDP?

Есть два приложения(сервер и клиент). Сервер отправляет imageData через udp socket. Клиент, в свою очередь, принимает imageData вставляет в Iplimage и отображает.
Часть кода сервера.
IplImage *small уже заполнен данными.
char *buff;
buff=small->imageData;
int result = sendto(SendSocket,
                     buff, strlen(buff), 0, (SOCKADDR *) & RecvAddr, sizeof (RecvAddr));

Часть кода клиента.
int UDPMAX = 65507;
cvNamedWindow("Client", CV_WINDOW_AUTOSIZE); 
char *buff = (char*)malloc(UDPMAX);
int result = recvfrom(RecvSocket,
                       buff, strlen(buff), 0, (SOCKADDR *) & SenderAddr, &SenderAddrSize);
IplImage *small = cvCreateImage(cvSize(683,384), IPL_DEPTH_8U, 3);
buff[result]='\0';//обрезаю buff
small->imageData=buff;
cvShowImage("Client", small );

На клиент данные приходят(чексуммы совпадают), но при вызове cvShowImage вылетает ошибка. Во время дебага просмотрел buff клиента и buff сервера с помощью TextVisualizer и заметил, что они в некоторых местах отличаются(допустим "ЁўўўРРРЦЦЦ»»»" заменяются на "ЁўўўРРРЦЦЦііі¶¶¶").
  • Вопрос задан
  • 196 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы