簡體   English   中英

通過套接字將OpenCV Mat對象從Android Java發送到Java

[英]Send a OpenCV Mat object over socket from Android Java to Java

我在Windows機器上建立了Java Open CV Server的線程。 多個Android客戶端使用套接字編程連接到服務器,並希望通過套接字將當前攝像機幀的Mat對象發送到服務器,並在處理后從Server接收回Mat對象。

如何通過套接字將Mat對象從Android Java發送到Desktop Java?

我已經看到很多從C ++到Java的Mat,但是找不到Java到Java!

將Mat轉換為BufferedImage對象,然后以字節為單位通過套接字發送。 OpenCV已經具有Mattobmp功能,然后可以將位圖轉換為字節數組。 通過BufferedOutputStream通過套接字發送此字節數組。 在接收方,從獲得的字節中恢復Mat對象很容易(首先從字節數組中的原始數據中獲得BufferedImage),然后將其轉換回Mat。

那對我來說很好。

我的一些代碼片段:

發件人:

Bitmap bmp = ...

Utils.MattoBmp(mat, bmp)

byte[] bytes = new ...;
bmp.compress(...,..., bytes)

//then send the bytes by DataOutputStream.write

接收方:

//Read the DataInputStream data to an OutputStream

byte[] bytes = outputstream.toByteArray();

您需要做一些技巧才能將字節恢復到Image對象

然后創建另一個Mat對象,用圖像數據填充其內容。 我發現這是一種較慢的方法,如果有人建議使用較快的方法,我會感到很高興。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM