关于python:将OpenCV Mat转移到iPhone的方法

Way to transfer OpenCV Mat to iPhone

我正在RaspberryPi 2上执行计算机视觉项目。
计算机视觉是通过带有Python绑定的著名OpenCV库完成的。
我想显示Raspberry Pi正在使用iOS应用程序进行实时直播。

Raspberry Pi制作的图像是OpenCV Mats,在Python中不少于Numpy Arrays。
另一端的iPhone应用程序没有OpenCV详细功能,它只能使用我的逻辑图像。

现在,当我在设计这个东西时,我不知道这样做的最佳方法。

我将以这种方式分离问题:

  • 传输信息的最佳方法:TCP Server套接字连接或Web API以某种方式下载新映像?
  • 我要发送的信息的格式:值的多维数组(直接从Mat中获取),在这种情况下,如何在iPhone上解码信息,或在Raspberry Pi上使用OpenCV将其转换为图像,然后存储将其发送到某个地方(对我来说似乎很杂乱且缓慢)?
  • 您对此有何看法?

    预先感谢。


    我这样解决了这个问题:

  • 使用cv2.imencode(extension, mat)函数对图像Mat进行编码,该函数将返回带有编码图像的字节数组。
  • 使用TCP套接字发送生成的字节数组。
  • 具体是:

    用于转换的函数是

    1
    2
    3
    4
    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客户端。

    现在一切正常且顺利。

    仍然感谢。