代码之家  ›  专栏  ›  技术社区  ›  John Ng

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

  •  0
  • John Ng  · 技术社区  · 10 年前

    我正在尝试编写一个客户端-服务器类型的应用程序。安装在谷歌眼镜中的客户端应用程序使用摄像头进行视频拍摄。图像帧被发送到安卓智能手机中安装的服务器应用程序。我目前正在通过蓝牙进行此操作,这似乎很慢。我当前的图像设置为320x240,4个频道。发送的每帧大约是307200字节,这对于蓝牙来说可能太大了,无法处理,但我不太确定。将每个帧写入OutputStream大约需要2秒。我正在使用OpenCV,并通过蓝牙在 public Mat onCameraFrame(CvCameraViewFrame inputFrame) 方法

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

    我不需要高fps流。5-10 fps应该是可以接受的。android手机将在这个流中使用计算机视觉技术。

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

    1 回复  |  直到 10 年前
        1
  •  0
  •   Kornel    10 年前

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

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