java - 通过套接字从 Java 向 Java 发送 Mat 对象

标签 java sockets opencv mat

我了解 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/

相关文章:

java - 是否有用于 Eclipse 3.4 的 jface 数据绑定(bind)框架的良好示例和文档?

c++ - 获取 cv::Mat 的源 ROI 坐标

python - 第 293 行的 OpenCV 错误 : Assertion failed in undistort. cpp

C++访问结构变量导致段错误

c++ - 使用某些系数将图像转换为灰度的最快方法

java - 文件复制在 Eclipse 测试环境中有效,但在打包程序中产生 URI 错误

java - 为什么在运行我的 Java 应用程序时 proxyHost/proxyPort 不工作?

java - spring 3.0.5 库 jars

apache - 我可以从 C 模块内部强制关闭 Apache 2.2 连接吗?

iphone - iOS SDK : How can I check if a port is open?