我了解 Java 上的套接字并通过它发送 Int、String、字节等。
我只想知道有没有办法将 Mat 对象解码为字节数组,然后通过 java 套接字发送它,然后从收到的字节中检索 Mat 对象?
Till Now this is What I have done
用于通过 socket 发送垫子
//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();
用于通过 socket 接收垫
//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_ );
最佳答案
我的想法是使用 JNI 使用 FileStorage
类来保存 Mat。
以下代码可用于将 Mat 保存为文件存储
FileStorage storage("image.xml", FileStorage::WRITE);
storage << "img" << mat;
storage.release();
然后使用 Socket 发送文件,然后从 File 中检索 Mat。
FileStorage fs("image.xml", FileStorage::READ);
Mat img;
fs >> img;
关于java - 通过套接字从 Java 向 Java 发送 Mat 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30847787/