Android:访问硬件相机预览帧数据而不绘制它们

2024-04-04

根据 Java SDK 端的 android 相机文档,必须为相机预览帧提供一个要绘制的(可见且活动的)表面,以便访问帧数据。我已经链接了我在这里遇到的一些内容(我是新人,所以最多有 2 个超链接),但是在最终在这里发布我自己的问题之前,我查阅了大量各种内容的文档。

我的问题:

a)我明确不想将相机预览绘制到屏幕上,如果可能的话,我只想直接从相机缓冲区获取字节数据(我可以从这里获取)。

b) 是的,我看到了这个:从相机拍摄照片而不进行预览 https://stackoverflow.com/questions/2386025/android-camera-without-preview.

但是,这表明使用此库的应用程序必须将此(看似)任意视图插入到其应用程序布局中,该布局必须始终可见(它们无法切换布局、更改父容器的可见性或使用子活动)应用程序生命周期。

其实我的需求是类似的这张海报的 https://stackoverflow.com/questions/9744790/android-possible-to-camera-capture-without-a-preview,除了我想要连续实时的相机预览数据流,而不是保存到磁盘上图像的捕获。因此PictureCallback与他一起为他工作myCamera.takePicture称呼。由于显而易见的原因,将连续捕获写入磁盘对我来说不是一个解决方案,因此这在我的情况下不起作用。myCamera.takePicture也比获取预览帧慢得多。

c) 我已经开始涉足 NDK,并且对它有了很好的感觉。然而,根据this https://groups.google.com/forum/?fromgroups#!topic/android-ndk/qehnrEEoxa0%5B1-25%5D只是不支持或不推荐通过本机访问相机数据,即使如此,设备兼容性也会遇到巨大麻烦。

如果这已经过时了,并且有可靠的 NDK 路线从 Android 设备获取相机数据,我找不到它们,所以如果你能向我指出它们,那就太好了。

d) 我想让这个库可以通过 Unity 等工具访问(以 Unity 插件的形式),为此我希望能够将其编译成 JAR(或 .so 表示本机)并期望它能够正常工作以这种方式导入库的 Android 应用程序,以便它们可以使用相机,而无需应用程序开发人员需要特定的 UI/布局配置。

Context:

我希望能够创建一个在 Android 应用程序中使用的视觉处理库,并且不想限制使用该库的应用程序必须使用特定的应用程序布局并将特定视图绘制到屏幕上才能使用视觉处理结果 - 举一个非常简单的例子,如果一个应用程序想要使用我的库来获取相机所看到的平均颜色,并且想要在屏幕上为该颜色的图像着色。

对于我所拥有的任何观点,我能得到的任何建议都将非常有帮助。非常感谢您抽出时间!


我完全忘记了我提出过这个问题。两年后,经过几个 Android SDK 版本的开发,我们有了一个可以运行的系统。

我们正在使用扩展SurfaceTexture, cameraSurface并参考所需的相机。使用相机Surface的SurfaceTexture, 我们称之为

mCamera.setPreviewTexture(mSurfaceTexture);
mCamera.startPreview();

然后覆盖当前活动相机的previewCallback从您的活动或任何您需要的地方。

mCamera.setPreviewCallback(new PreviewCallback() {

     public void onPreviewFrame(final byte[] data, final Camera camera) {
         // Process the contents of byte for whatever you need
     }
});

这使您可以连续处理相机看到的内容,而不仅仅是浏览存储的图像。当然,这将受限于相机的预览分辨率(可能与静态捕捉或视频分辨率不同)。

如果有时间,我会尝试制作一个简单的工作演示。

编辑:我链接到的 SDK 不再免费提供。您仍然可以通过BitGym 联系页面 https://www.bitgym.com/developer/index.html#contact.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android:访问硬件相机预览帧数据而不绘制它们 的相关文章

随机推荐

  • Flutter中输入装饰中为labelText添加强制(*)

    我想添加星号登录InputDecorationlabelText 并更改其颜色 如红色 以便用户轻松理解此字段是必需的 TextField autofocus true controller nameCtrlr keyboardType T
  • 如何访问项目中的本地文件

    我想向我的应用程序添加一些静态文件 图像 二进制文件等 我已将它们放在名为的文件夹下Resources并将其添加到我的 XCode 项目中 接下来 我将这些文件添加到Copy Bundle Resources in the Build Ph
  • App Store 二进制文件被拒绝 - 与您的应用关联的卖家和公司名称不反映该名称

    我最近向 iTunes Connect 上传了一份新申请以进行审批 它的版本是1 0 今天 二进制文件被拒绝 解析中心提到了以下内容 与您的应用程序关联的卖家和公司名称不反映该名称 根据 Apple 开发者计划许可协议第 1 2 节的要求
  • Boost Property_Tree迭代器,如何处理它们?

    抱歉 我之前问过关于同一主题的问题 但我的问题涉及那里描述的另一个方面 如何迭代提升 https stackoverflow com questions 4586768 how to iterate a boost property tre
  • 强制小程序加载到同一个 JVM 实例中?

    我接管了一个旧 Web 应用程序的维护工作 该应用程序使用嵌入在同一网页中的多个小程序 这曾经工作得很好 但自从引入了下一代 Java 插件 1 6 0 10 后 不保证各个小程序能够加载到同一个 JVM 实例中 如果它们加载在不同的 JV
  • 如何安全、正确地创建 Windows 剪贴板的备份?

    我正在尝试创建 Windows 剪贴板的备份 基本上我正在做的是使用EnumClipboardFormats 获取当前剪贴板上存在的所有格式 然后对于每种格式 我调用GetClipboardData format 备份数据的一部分显然涉及复
  • 为什么 Scala 标准库中 @specialized 的东西这么少?

    我已经搜索过使用 specialized在Scala 2 8 1标准库的源代码中 看起来只有少数特征和类使用此注释 Function0 Function1 Function2 Tuple1 Tuple2 Product1 Product2
  • WPF MediaElement 视频播放撕裂

    我正在尝试使用 WPF 中的 MediaElement 控件来播放视频 它在 Vista 中运行得很好 但是当我在 XP 机器上运行它时 我的显示屏出现撕裂现象 看起来好像没有使用垂直同步 只是在绘制过程中更新屏幕 有人知道如何解决这个问题
  • 如何让 VS Code 识别 ES7 绑定运算符

    VS Code 无法识别开箱即用的 ES7 绑定语法 相反 它显示为语法错误 代码中突出显示的错误示例 https i stack imgur com gXXrX png ts Declaration or statement expect
  • Android信号分析+一些过滤器

    由于世界杯是主要的体育赛事 而呜呜祖拉是世界上最烦人的声音 我想通过阅读这篇新文章来彻底消除它们 http www popsci com diy article 2010 06 simple software can filter out
  • ContextCompat.checkSelfPermission 的用例是什么?

    目前我有以下方法来检查运行时权限AppCompatActivity对于棉花糖 if Build VERSION SDK INT gt Build VERSION CODES LOLLIPOP MR1 boolean hasPermissio
  • Rails 3:如何在控制器中获取图像路径?

    要获取控制器中的图像路径 我使用以下方法 class AssetsController lt ApplicationController def download image file name path Rails root join p
  • Z3 SMT 求解器中的常数相等

    我正在使用 Microsoft 的 Z3 SMT 求解器 并且我正在尝试定义自定义类型的常量 默认情况下 这些常量似乎并不不平等 假设您有以下程序 declare sort S 0 declare const x S declare con
  • 带有淡入淡出效果的完整背景图像

    crossfade gt div animation imageAnimation 30s linear infinite 0s backface visibility hidden background size cover backgr
  • 旁加载静态数据

    在 ParDo 中处理数据时 我需要使用存储在 Google Cloud Storage 上的 JSON 架构 我想这可能是侧面加载 我读了他们称之为文档的页面 https beam apache org releases pydoc 2
  • 如何将 [[nodiscard]] 属性应用于 lambda?

    我想防止人们在不处理返回值的情况下调用 lambda Clang 4 0 拒绝我尝试过的一切 使用 std c 1z 进行编译 auto x nodiscard return 1 error nodiscard attribute cann
  • 处理segfault信号SIGSEGV需要使用siginfo_t确定segfault的原因

    我正在为 pthread 库制作一个包装器 它允许每个线程拥有自己的一组非共享内存 现在 如果任何线程尝试读取另一个线程的数据 程序就会出现段错误 这很好 我可以用叹息者抓住它并打电话pthread exit 并继续执行该程序 但并不是所有
  • Bootstrap 下拉列表 z-index 显示在模式窗口页脚下

    我在引导程序方面遇到了一些样式问题 我有一个包含下拉菜单的小模态窗口 但是我似乎无法让下拉菜单显示在窗口的页脚上 我已经使用了下拉列表的 zindex 确保它高于 Windows 但没有运气 谁能建议我应该改变什么 The html div
  • 如何创建浮动操作按钮转变成单张材料

    我正在尝试查看设计库中是否存在任何内置动画来创建浮动操作按钮 并将其转换为单个材料表 如材料设计图像中所示 https material design storage googleapis com publish material v 4
  • Android:访问硬件相机预览帧数据而不绘制它们

    根据 Java SDK 端的 android 相机文档 必须为相机预览帧提供一个要绘制的 可见且活动的 表面 以便访问帧数据 我已经链接了我在这里遇到的一些内容 我是新人 所以最多有 2 个超链接 但是在最终在这里发布我自己的问题之前 我查