【发布时间】:2015-08-31 02:28:42
【问题描述】:
我了解 Java 上的 Sockets 并通过它发送 Int、String、bytes 等。
我只想知道有没有办法将 Mat 对象解码为字节数组,然后通过 java 套接字发送它,然后从接收到的字节中取回 Mat 对象?
到目前为止,这就是我所做的
用于通过套接字发送 Mat
//Sending Mat over Socket
Mat socketmat;
long nbytes = socketmat.total() * socketmat.elemSize();
byte[] bytes = new byte[ (int) nbytes ];
socketmat.get(0, 0,bytes);
mybytearray = bytes;
dos = new DataOutputStream(os);
dos.writeLong(nbytes);
dos.write(mybytearray, 0, mybytearray.length);
dos.flush();
用于通过套接字接收垫
//Receiving Mat over Socket
long len = clientData.readLong();
byte[] data = new byte[ (int) len];
if (len > 0) {
clientData.readFully(data);
}
byte[] bytes_ = data;
result_mat.get(0, 0, bytes_ );
【问题讨论】:
-
@Newd ..是的,我现在已经提到了
-
你试过ObjectOutputStream吗?这对您来说是一个很好的起点,因为它会自动处理序列化/反序列化。
-
不...我对序列化/反序列化一无所知
-
不要尝试通过网络发送 Mat。相反, imencode() 将其转换为字节数组并 imdecode() 在另一边。
-
@berak..我该怎么做.....我无法从 imdecode() 检索相同的垫子,因为它将被压缩并更改为 .jpg 或 .png