将 OpenCV Mat 传输到 iPhone 的方法

Way to transfer OpenCV Mat to iPhone

我正在我的 RaspberryPi 2 上做一个计算机视觉项目。 计算机视觉是通过众所周知的具有 Python 绑定的 OpenCV 库完成的。 我想展示 Raspberry Pi 使用 iOS 应用程序的实时流。

Raspberry Pi 制作的图像是 OpenCV Mats,在 Python 中不亚于 Numpy 数组。 另一端的 iPhone 应用程序没有 OpenCV 详细说明功能,它只能在我的逻辑中处理图像。

现在,当我在设计这个东西时,我想不出最好的方法。

我会这样区分问题:

  1. 传输信息的最佳方式:TCP 服务器套接字连接或 Web API 以某种方式下载新图像?
  2. 我发送的信息格式:多维值数组(直接取自垫子),在这种情况下如何解码 iPhone 上的信息,或将垫子转换为图像在 Raspberry Pi 上使用 OpenCV 然后将其存储在某处并发送(对我来说这看起来很乱而且很慢)?

你对此有何看法?

提前致谢。

我是这样解决问题的:

  1. 使用 cv2.imencode(extension, mat) 函数对图像 Mat 进行编码,其中 returns 带有编码图像的字节数组。
  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 客户端。

现在一切正常。

谢谢。