2016-09-18 52 views
1

我正在RaspberryPi 2上做計算機視覺項目。 計算機視覺是通過熟知的OpenCV庫和Python綁定完成的。 我想要展示Raspberry Pi在iOS應用程序中所做的實時流。將OpenCV Mat轉移到iPhone的方式

Raspberry Pi正在闡述的圖像是OpenCV Mats,它在Python中不少於Numpy Arrays。 另一端的iPhone應用程序沒有OpenCV精化功能,它只能在我的邏輯中使用圖像。

現在,雖然我正在設計這件事,但我無法弄清楚這樣做的最佳方式。

我就這樣分開的問題:

  1. 最佳方式傳遞信息:TCP服務器套接字連接或Web API,以某種方式下載新的圖像?
  2. 我要發送的信息的格式:多值數組值(直接從Mat中獲取),在這種情況下,如何解碼iPhone上的信息,或將Ras轉換爲Raspberry Pi上OpenCV的圖像然後將它存儲在某個地方併發送給我(對我來說,這看起來很亂並且很慢)?

您對此有什麼意見?

在此先感謝。

回答

1

我解決了這個問題是這樣的:

  1. 編碼的圖象與墊功能cv2.imencode(extension, mat)返回與編碼圖像的字節數組。
  2. 使用TCP Socket發送生成的字節數組。

具體做法是:

用於轉換功能是

def mat_to_byte_array(mat, ext): 
    success, img = cv2.imencode(ext, mat) 
    bytedata = img.tostring() # numpy function used for casting to bytearray 
    return success, bytedata 

在iOS上我以前SwiftSocket庫來實現TCP客戶端。

現在一切正常,順利。

無論如何。