[英]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.