从谷歌眼镜向Android设备发送摄像头流

从谷歌眼镜向Android设备发送摄像头流,android,opencv,camera,stream,google-glass,Android,Opencv,Camera,Stream,Google Glass,我正在尝试编写一个客户机-服务器类型的应用程序。安装在Google Glass中的客户端应用程序使用摄像头进行视频捕获。图像帧被发送到安卓智能手机中安装的服务器应用程序。我目前正在通过蓝牙进行这项工作,但速度似乎很慢。我当前的图像设置是320x240,4个通道。发送的每个帧大约307200字节,这可能太大了,蓝牙无法处理,但我不太确定。每帧写入OutputStream大约需要2秒。我正在使用OpenCV,并通过公共Mat onCameraFrameCvCameraViewFrame inputF

我正在尝试编写一个客户机-服务器类型的应用程序。安装在Google Glass中的客户端应用程序使用摄像头进行视频捕获。图像帧被发送到安卓智能手机中安装的服务器应用程序。我目前正在通过蓝牙进行这项工作,但速度似乎很慢。我当前的图像设置是320x240,4个通道。发送的每个帧大约307200字节,这可能太大了,蓝牙无法处理,但我不太确定。每帧写入OutputStream大约需要2秒。我正在使用OpenCV,并通过公共Mat onCameraFrameCvCameraViewFrame inputFrame方法中的蓝牙发送帧

Google Glass的MyGlass应用程序有一个屏幕播放功能,屏幕上显示的UI将发送到配对的Android手机。这是通过蓝牙实现的,比我的实现要快得多

我不需要高fps流。应能承受5-10 fps。android手机将在这一领域应用计算机视觉技术


有人能提出一个好的方法吗?

你可以尝试用Base64编码你的图像,通过蓝牙使用XML、JSON或protobuf等协议发送它们。也许这不是最有效的方法,但目前对您来说可能是最简单的方法。 但是,如果要访问任何cv::Mat的数据成员,请务必小心,如果frame.isContinuous返回true,则可以将其用作字节数组,否则就不是

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

在通过蓝牙发送之前,您是否尝试过压缩帧(如JPEG)@科内尔:这很有效。我能够得到大约3fps,这对于我的应用来说已经足够好了。如果你想把这个作为答案,我会把它标记为正确答案: