【问题标题】:Send camera stream from Google Glass to Android device将相机流从 Google Glass 发送到 Android 设备
【发布时间】:2015-01-30 07:17:31
【问题描述】:

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

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

我不需要高 fps 流。 5-10 fps 应该是可以容忍的。安卓手机会在这个流中做计算机视觉技术。

任何人都可以提出一个好的方法吗?

【问题讨论】:

  • 在通过蓝牙发送之前,您是否尝试过压缩帧(例如​​ JPEG)? docs.opencv.org/modules/highgui/doc/…
  • @Kornel 这很好用。我能够获得大约 3fps,这对于我的应用程序来说已经足够了。如果您想将此作为答案,我会将其标记为正确的:)

标签: android opencv camera stream google-glass


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2014-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-21
    • 2014-08-29
    • 1970-01-01
    • 2019-05-26
    • 2019-03-26
    相关资源
    最近更新 更多