将摄像头流从 Google Glass 发送到 Android 设备
Send camera stream from Google Glass to Android device
我正在尝试编写客户端-服务器类型的应用程序。 Google Glass 中安装的客户端应用程序使用摄像头进行视频捕获。图像帧被发送到安装在 android smartphone 中的服务器应用程序。我目前正在通过蓝牙执行此操作,这似乎很慢。我当前的图像设置是 320x240、4 通道。发送的每个帧大约为 307200 字节,这对于蓝牙来说可能太大而无法处理,但我不太确定。每帧写入 OutputStream 大约需要 2 秒。我正在使用 OpenCV,我正在 public Mat onCameraFrame(CvCameraViewFrame inputFrame)
方法中通过蓝牙发送帧。
适用于 Google Glass 的 MyGlass 应用程序具有 ScreenCast 功能,可以将 Glass 中显示的 UI 发送到配对的 Android phone。这是通过蓝牙完成的,比我的实现快得多。
我不需要高 fps 流。 5-10 fps 应该是可以接受的。 android phone 将在此流中进行计算机视觉技术。
任何人都可以提出一个好的方法吗?
您可以尝试使用 XML、JSON 或 protobuf 等协议在 Base64 中对图像进行编码以通过蓝牙发送它们。这可能不是最有效的方法,但目前对您来说可能是最简单的方法。
但如果您想访问任何 cv::Mat
的 data
成员,请务必小心,如果 frame.isContinuous()
returns 为真,则它可以用作字节数组,否则不能。
或者,最好在服务器端将帧编码为 JPEG,然后在客户端对其进行解码。它将显着减少应通过网络流式传输的数据大小,并且由于蓝牙的带宽有限可能会很有用。
OpenCV 的 imencode()
and imdecode()
will perform both side of compression. See imwrite()
支持的格式列表和标志描述。
我正在尝试编写客户端-服务器类型的应用程序。 Google Glass 中安装的客户端应用程序使用摄像头进行视频捕获。图像帧被发送到安装在 android smartphone 中的服务器应用程序。我目前正在通过蓝牙执行此操作,这似乎很慢。我当前的图像设置是 320x240、4 通道。发送的每个帧大约为 307200 字节,这对于蓝牙来说可能太大而无法处理,但我不太确定。每帧写入 OutputStream 大约需要 2 秒。我正在使用 OpenCV,我正在 public Mat onCameraFrame(CvCameraViewFrame inputFrame)
方法中通过蓝牙发送帧。
适用于 Google Glass 的 MyGlass 应用程序具有 ScreenCast 功能,可以将 Glass 中显示的 UI 发送到配对的 Android phone。这是通过蓝牙完成的,比我的实现快得多。
我不需要高 fps 流。 5-10 fps 应该是可以接受的。 android phone 将在此流中进行计算机视觉技术。
任何人都可以提出一个好的方法吗?
您可以尝试使用 XML、JSON 或 protobuf 等协议在 Base64 中对图像进行编码以通过蓝牙发送它们。这可能不是最有效的方法,但目前对您来说可能是最简单的方法。
但如果您想访问任何 cv::Mat
的 data
成员,请务必小心,如果 frame.isContinuous()
returns 为真,则它可以用作字节数组,否则不能。
或者,最好在服务器端将帧编码为 JPEG,然后在客户端对其进行解码。它将显着减少应通过网络流式传输的数据大小,并且由于蓝牙的带宽有限可能会很有用。
OpenCV 的 imencode()
and imdecode()
will perform both side of compression. See imwrite()
支持的格式列表和标志描述。