将 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 详细说明功能,它只能在我的逻辑中处理图像。
现在,当我在设计这个东西时,我想不出最好的方法。
我会这样区分问题:
- 传输信息的最佳方式:TCP 服务器套接字连接或 Web API 以某种方式下载新图像?
- 我发送的信息格式:多维值数组(直接取自垫子),在这种情况下如何解码 iPhone 上的信息,或将垫子转换为图像在 Raspberry Pi 上使用 OpenCV 然后将其存储在某处并发送(对我来说这看起来很乱而且很慢)?
你对此有何看法?
提前致谢。
我是这样解决问题的:
- 使用
cv2.imencode(extension, mat)
函数对图像 Mat 进行编码,其中 returns 带有编码图像的字节数组。
- 使用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 客户端。
现在一切正常。
谢谢。
我正在我的 RaspberryPi 2 上做一个计算机视觉项目。 计算机视觉是通过众所周知的具有 Python 绑定的 OpenCV 库完成的。 我想展示 Raspberry Pi 使用 iOS 应用程序的实时流。
Raspberry Pi 制作的图像是 OpenCV Mats,在 Python 中不亚于 Numpy 数组。 另一端的 iPhone 应用程序没有 OpenCV 详细说明功能,它只能在我的逻辑中处理图像。
现在,当我在设计这个东西时,我想不出最好的方法。
我会这样区分问题:
- 传输信息的最佳方式:TCP 服务器套接字连接或 Web API 以某种方式下载新图像?
- 我发送的信息格式:多维值数组(直接取自垫子),在这种情况下如何解码 iPhone 上的信息,或将垫子转换为图像在 Raspberry Pi 上使用 OpenCV 然后将其存储在某处并发送(对我来说这看起来很乱而且很慢)?
你对此有何看法?
提前致谢。
我是这样解决问题的:
- 使用
cv2.imencode(extension, mat)
函数对图像 Mat 进行编码,其中 returns 带有编码图像的字节数组。 - 使用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 客户端。
现在一切正常。
谢谢。