我尝试使用OpenCV C ++流式传输实时视频。在Serverside中捕获网络摄像头视频,然后对其进行编码并发送给客户端。当我尝试在客户端进行解码时,它无法做到。
std::vector<char> buf(recvbuf, recvbuf + recvbuflen);
// error here
cv::Mat matrixJprg = cv::imdecode(cv::Mat(buf), CV_LOAD_IMAGE_COLOR);
pYuvImage = cvCloneImage(&(IplImage)matrixJprg);
Picture can see some data are lost
服务器代码编码部分。
std::vector<int> p;
p.push_back(CV_IMWRITE_PNG_COMPRESSION);
p.push_back(10);
std::vector<unsigned char> buf;
cv::imencode(".png", cv::cvarrToMat(image), buf, p);
imageSize = buf.size();
char* encodedBuffer = (char*)buf.data();
char* sendBuffer = new char[buf.size()];
memcpy(sendBuffer, encodedBuffer, buf.size());
sendData = (char*)buf.data();
hdr.dataLength = htonl(imageSize);
hdr.encoded = htons(1);
mSocket->writeData((char*)(&hdr), sizeof(hdr));
mSocket->writeData(sendBuffer, imageSize);
我尝试仅在服务器端流式传输视频而不是将其发送到客户端,在服务器端对视频进行编码和解码,它的工作正常。 有人帮我解决这个问题。