어떻게 바이트 배열을 소켓에서받은 매트로 변환 할 수 있습니까? 이OpenCV C++ 바이트 배열을 매트로 변환
Mat frame; //colour image
int imgSize = frame.total()*frame.elemSize();
int bytes = send(clientSock, frame.data, imgSize, 0));//write to the socket
그리고 서버의 뜻처럼 컬러 이미지 데이터를 전송합니다
내 클라이언트 응용 프로그램은 내가 수신기에서 왜곡 된 이미지를 얻고
char sockData[imgSize];
Mat img;
for (int i = 0; i < imgSize; i += bytes) {
bytes = recv(connectSock, sockData +i, imgSize - i, 0));
}
// Write to mat
for (int i = 0; i < img.rows; i++) {
for (int j = 0; j < img.cols; j++) {
(img.row(i)).col(j) = (uchar)sockData[((img.cols)*i)+j];
}
}
같은 데이터를 수신합니다. 내 코드에 문제가 있습니까? 사전에 감사합니다 ....... 당신이 컬러 이미지가있는 경우
왜 sockData는 char의 배열이며 uchar이 아닌가요? – Michele
왜 cv :: Mat :: (x, y) 메서드를 사용하지 않습니까? x는 왼쪽에서 오른쪽으로의 열이고 y는 위에서 아래로의 열입니다 –
Michele
이미지가 컬러 인 경우 -> CV_8UC3 각 픽셀에 대해 8 비트의 3 채널이 있음 – Michele