【发布时间】:2014-03-13 11:38:48
【问题描述】:
我有发送者和接收者。当我在同一台计算机上尝试时,接收器正确接收图像,但在另一台计算机上执行发送器时,接收器接收到失真图像。其他正确接收(整数、字符数组...)
接收者:
char sockData[record.imageSize];
bytes_received = recv(new_sd, sockData, record.imageSize, 0);
cv::Mat img = cv::Mat::zeros(height,width,CV_8UC1);
memcpy(img.data, sockData, record.imageSize);
std::vector<int> compression_params;
compression_params.push_back(CV_IMWRITE_PNG_COMPRESSION);
compression_params.push_back(3);
customerFacePath << id << ".png";
cv::imwrite(customerFacePath.str().c_str(),img,compression_params);
发件人:
rec.imageSize = av.mImg.total()*av.mImg.elemSize();
bytes_sent = send(socketfd, av.mImg.data, rec.imageSize, 0);
这里是扭曲的图像,
顶部只有一小部分是正确的。我该如何解决这个问题?
【问题讨论】:
-
在此处查看答案stackoverflow.com/questions/20314524/… 可能会有所帮助。
-
将您的
recv放入一个循环中,直到收到所有字节。
标签: c++ sockets opencv mat distortion