将相机流从Google Glass发送到Android设备

时间:2015-01-30 07:17:31

标签: android opencv camera stream google-glass

我正在尝试编写客户端 - 服务器类型的应用程序。 Google Glass中安装的客户端应用使用相机进行视频捕获。图像帧被发送到安装在Android智能手机中的服务器应用程序。我目前通过蓝牙这样做,这看起来很慢。我当前的图像设置为320x240,4个通道。发送的每个帧大约是307200字节,这对于蓝牙来说可能太大而无法处理,但我不太确定。每帧写入OutputStream大约需要2秒钟。我正在使用OpenCV,我通过蓝牙以public Mat onCameraFrame(CvCameraViewFrame inputFrame)方式发送帧。

Google Glass的MyGlass应用程序具有ScreenCast功能,其中Glass中显示的UI将发送到配对的Android手机。这是通过蓝牙完成的,并且比我的实现快得多。

我不需要高fps流。 5-10 fps应该是可以容忍的。 Android手机将在此流中执行计算机视觉技术。

有人能建议一个好方法吗?

1 个答案:

答案 0 :(得分:0)

您可以尝试在Base64中对图像进行编码,以使用XML,JSON或protobuf等协议通过蓝牙发送它们。可能这不是最有效的方法,但对于你来说这可能是最简单的方法 但是如果你想访问任何data的{​​{1}}成员,请务必注意,如果cv::Mat返回true,那么它可以用作字节数组,否则不会。

或者,最好在服务器端将帧编码为JPEG,然后在客户端对其进行解码。它将显着减少应通过网络流式传输的数据大小,并且由于蓝牙的带宽有限,因此可能很有用 OpenCV的imencode()imdecode()将执行压缩的两个方面。有关支持的格式和标志说明列表,请参阅imwrite()