【问题标题】:How to record video with AR effects and save it?如何录制带有 AR 效果的视频并保存?
【发布时间】:2020-12-23 20:49:51
【问题描述】:

我正在尝试创建一个像 Snapchat 这样的应用程序,它在录制视频时应用面部过滤器,并在打开过滤器的情况下保存它。 我知道有 AR core 和 flutter_camera_ml_vision 之类的软件包,但这些对我没有帮助。

我想提供面部过滤器并在录制视频时将它们应用于面部,并将带有过滤器的视频保存在面部。

【问题讨论】:

  • 无论如何都不是一键式解决方案,但我试图在我的回答中概述该过程。祝你好运,编码愉快!
  • 我花了一点时间写了一个答案...任何)或如果缺少某些东西。没有办法对你的问题给出准确的答案,所以我至少试了一下,为你指明了一个看起来合适的方向......
  • 公平评论 cseder。我同意
  • 抱歉,这几天有点忙。是的,它可以通过 Google 的 ml 套件和 ar 插件来完成,但这里的主要问题是如何实现这些插件并导入 AR 模型并在录制视频时将其应用于视频。在颤动录制时,我什至无法从视频中提取帧。如果有人以前使用过这个,那将是一个非常好的帮助。
  • 同样,回答大多数技术问题都需要详细信息。 1. 您尝试过什么(包括发出的命令/使用的工具) 2. 预期结果是什么 3. 实际结果是什么/是什么(包括错误消息、日志链接等) 4. 您在以下方面做了什么在决定提出这个问题之前进行故障排除

标签: android flutter arcore


【解决方案1】:

不是最容易回答的问题,但是......

我会试一试,让我们看看结果如何。 首先,您应该填写有关问题中给出的陈述的更多详细信息,尤其是您在此处要说的内容:

我知道有 AR core 和 flutter_camera_ml_vision 之类的软件包,但这些对我没有帮助。

你是如何解决这个问题的?是什么让你说它对你没有帮助?

开始...

首先,让我们了解一些必要的基础知识,以更好地了解您在必备知识领域的现状和水平:

  • 您是否有在其他语言/其他应用中使用计算机视觉和机器学习框架的经验?
  • 您是否具备使用这项技术所需的数学技能?
  • 在您使用 Flutter 的过程中,我的猜测是跨平台兼容性是重中之重,您之前是否做过大量 Flutter 编程,您的主要目标是哪些设备?

那么,创建用于实时视频录制的类似 Snapchat 的过滤器需要什么?

嗯,当您使用任何以体面的方式实现过滤器的应用程序对实时视频应用过滤器时,会在幕后进行大量工作。

Snapchat 使用他们多年来建立的内部软件,使用从多个数百万美元的公司收购中获得的技术,这些公司通常是专门从事计算机视觉和 AR 技术的成熟公司,在除了他们自己的努力之外,尤其是在过去的 5-6 年里,它稳步发展,令人印象深刻。

这不是你可以作为一个“通宵达旦”的人自己拼凑起来并期待好的结果。但是有一些工具可以简化一般的学习曲线,但这些工具也需要对所使用的基本概念和技术有深刻的理解,并且需要大量的数学知识。

技术弯路

好的,我知道我在这里可能有点过火了,但这是基本的构建块,没有多少人知道看似“基本”功能所需的实际计算量,所以请 TLDR;与否,这是基本的东西。

要使用 iPhone 或 Android 设备等设备上的摄像头为实时捕捉创建一个好的过滤器,您可以并且很可能会使用您提到的最终想要使用的 AR,但要意识到这是一个计算机视觉 (CV) 广泛领域的子集,它使用来自人工智能 (AI) 和机器学习 (ML) 的各种算法来完成以下主要任务:

  • 面部识别 给定来自实时摄像机的视频内容帧,定义包含人脸的区域(有些也适用于动物,但让我们尽可能简单)并输出一个适合用作 (x, y,宽度和高度)。

    仅分析阶段就需要人工智能领域不同部分的算法/技术进行相当复杂的组合,这是视频,而不是单个静态图像文件,必须随着人/相机的移动而不断更新,所以它必须在毫秒范围内接近实时完成。

    我相信结合来自计算机视觉的HOG(定向梯度直方图)和来自机器学习的SVMs(支持向量机/网络)的不同实现仍然很常见。

  • 检测面部标志 这将定义某种效果/过滤器对不同类型的面部特征的适应程度,并检测眼镜、帽子等配件。在不同的文献中也称为“面部关键点检测”、“面部特征检测”和其他变体主题。

  • 头部姿势估计 一旦你知道了几个地标点,你也可以估计头部的姿势。 这是“面部交换”等效果的重要组成部分,可以以可接受的方式正确地将一张脸与另一张脸重新对齐。像OpenFace(使用 Python、OpenCV、OpenBLAS、Dlib ++)这样的工具包包含许多有用的功能,能够进行面部标志检测、头部姿势估计、面部动作单元识别和眼睛注视估计,提供了相当不错的结果.

  • 将效果合成到视频帧中 完成上述工作后,剩下的就是使用合成技术将目标过滤器、狗耳朵、兔子牙齿等应用到视频帧上。 由于这个答案开始看起来更像一篇文章,所以我会留给你去弄清楚你是否想了解更多关于这部分过程的细节。

嘿,伙计。我在 Flutter 中要求 AR,记得吗?

是的。 我知道,我可以有点得意忘形。 好吧,我的观点是,创建您所要求的东西所需要的时间远比人们通常想象的要多。

但是。 如果 Flutter 是您的首选工具,我最好的建议是学习如何使用 Google 的 Firebase 工具套件 Firebase Machine Learning 和 Google 的 MLKit 中的基于云的 ML 服务。

添加一些特定于 AR 的插件,例如 ARCore Plugin,如果你有正确的背景和态度,加上良好的学习能力,我相信你将能够将它们拼凑起来.

希望这不会离您的核心问题太远,但我知道没有捷径比我已经提到的更多。

【讨论】:

    【解决方案2】:

    您绝对可以使用 flutter_camera_ml_vision 插件,它的面部识别功能将为您提供面部标志的位置,例如鼻子、眼睛等。然后只需将 CameraPreview 与 CustomPaint(foregroundPainter: 小部件堆叠在一起,您可以在其中绘制过滤器使用不同的地标作为坐标,例如眼镜、胡须或任何您想要在相机预览中正确的面部位置。

    Google ML Kit 还具有生成地标的人脸识别功能,您可以为此编写自己的 Flutter 插件。

    您可以从实时相机预览中捕获帧并重新格式化它们,然后将其作为字节缓冲区传输到 ML 套件或 ML 视觉。我目前正在编写一个用于实时捕捉的 ML 套件姿势检测的颤振插件,所以如果您对此有任何具体问题,请告诉我。

    然后您必须合并两个曲面并以适当的格式保存到文件中。这对我来说是未知领域,因此我无法提供有关这部分的任何详细信息。

    【讨论】:

    • 你能提到你在这里说过的我在回答中没有说的一件事吗?
    • >*两个具体答案* - 我也提到了两个。但我喜欢你关于马的部分。
    猜你喜欢
    • 1970-01-01
    • 2022-10-18
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    • 2014-08-02
    • 2016-03-25
    • 2017-03-04
    • 1970-01-01
    相关资源
    最近更新 更多