【问题标题】:Getting camera frames from openCV output not the original frames of the cam从openCV输出获取相机帧而不是cam的原始帧
【发布时间】:2019-05-26 02:20:44
【问题描述】:

(在android中),我想要需要获取相机帧的应用程序,从openCV输出中获取,而不是获取相机的原始帧。例如,我有一个应用程序可以打开摄像头并显示像视频一样的摄像头帧,我希望这个应用程序从接口输出中获取摄像头帧(一些应用程序可以获取摄像头的原始帧并对其进行操作)。
接口应用程序像后台服务一样运行/运行,当其他应用程序使用相机 API 时,实际上 android 给他们接口应用程序输出而不是原始帧
有可能吗?

【问题讨论】:

  • 您的意思是要从存储/其他应用程序中读取帧?
  • 不是存储,因为最终应用程序使用相机 API 来获取相机帧而不是存储
  • 有什么想法,有可能吗?

标签: java android opencv image-processing opencv4android


【解决方案1】:

您的问题看起来有点乱,但我会尽力提供帮助。

您必须了解 OpenCV 没有内置视频编码器(或视频接口,如您所指)。图书馆依靠第三方来完成工作。您的界面已经存在(ta da!)只需检查一下您编译了哪个界面,并记住您可能需要为此编写 C++ 嵌入代码。

您的 Android 环境应该具有以下两种之一:

  • GStreamer: 可能是最好的选择,因为它有一个应用程序接收器,您可以将其作为一个合理的接口运行。

https://gstreamer.freedesktop.org/documentation/tutorials/android/index.html

  • FFMpeg: 完成这项工作,大多数时候比 GStreamer 快,但编码有点困难。

https://github.com/WritingMinds/ffmpeg-android

https://hackernoon.com/android-ndk-my-experience-with-ffmpeg-93dd7e4b9269

【讨论】:

  • 我想我应该举个例子:假设你想在 INSTAGRAM 中制作一个 LIVE,并且你想对 LIVE 帧进行一些更改,我想做一些当 Instagram 使用 cam API 来获取LIVE 的帧,而不是获取原始帧(直接从 cam),使用我的(界面)应用程序的操纵帧,不知何故 Instagram 应用程序不知道它使用一个界面,就好像它使用纯(原始)帧相机。换句话说,界面应用程序必须告诉 android,您必须将我的帧(界面的操纵 t 帧)而不是真实的 cam 帧提供给任何使用相机的应用程序
  • 我认为你应该考虑更多的事情。 Android 平台架构 (developer.android.com/guide/platform) 不允许您这样做。 Java API 将直接从 HAL 层请求相机帧 (developer.android.com/guide/topics/media/camera#detect-camera),因此不允许 "app in the middle" 事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-06
  • 2013-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-25
相关资源
最近更新 更多