首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何录制带有AR效果的视频,并将其保存在flutter中?

如何录制带有AR效果的视频,并将其保存在flutter中?
EN

Stack Overflow用户
提问于 2020-12-24 04:49:52
回答 2查看 1.1K关注 0票数 0

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

我想提供面部滤镜,并在视频录制的时候在脸上应用它们,也保存视频与滤镜上的脸。

EN

回答 2

Stack Overflow用户

发布于 2020-12-26 11:47:27

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

我会试一试,让我们看看事情会如何发展。首先,你应该填写一些关于问题中给出的陈述的更多细节,特别是你试图在这里说的话:

我知道有像AR core和flutter_camera_ml_vision这样的软件包,但它们对我没有帮助。

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

一开始..。

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

  • 您是否有在其他语言/其他应用程序中使用计算机视觉和机器学习框架的经验?
  • 您有使用此技术所需的数学技能吗?
  • 当您使用Flutter时,我猜跨平台兼容性是最重要的,您以前做过很多Flutter编程吗?您的主要目标是什么设备?

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

好的,当你使用任何应用程序以适当的方式对直播视频应用过滤器时,会有相当多的工作在幕后进行。

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

这不是你可以一个人“整夜”地拼凑在一起,然后期待好结果的东西。但是,有一些工具可以缓解一般的学习曲线,但这些工具还需要对所使用的基本概念和技术以及相当多的数学知识有深刻的理解。

技术弯路

好吧,我知道我在这里可能有点过头了,但这是基本的构建块,没有太多人意识到看似“基本”功能所需的实际计算量,所以请,TLDR;或者不,这是基本的东西。

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

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

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

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

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

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

  • 将效果合成到视频帧中在上面的工作完成后,其余的工作涉及使用合成技术将目标滤镜、狗耳朵、兔牙等应用到视频帧上。由于这个答案开始看起来更像一篇文章,如果你想知道这部分过程的更多细节,我将把它留给你去弄清楚。

嘿,伙计。我在颤动中要的AR,还记得吗?

是啊。我知道,我可能会有点忘乎所以。嗯,我的观点是,要创造出你所要求的东西,需要的东西比人们通常想象的要多得多。

但。如果Flutter是你选择的工具,我最好的建议是学习如何使用谷歌的Firebase工具套件Firebase Machine Learning和谷歌的MLKit提供的基于云的ML服务。

再加上一些AR特定的插件,比如ARCore Plugin,我相信如果你有正确的背景和态度,再加上很好的学习能力,你就能把这些东西拼凑起来。

希望这没有偏离你的核心问题太远,但据我所知,没有比我已经提到的更多的捷径了。

票数 2
EN

Stack Overflow用户

发布于 2021-01-13 00:19:46

你绝对可以使用flutter_camera_ml_vision插件和它的人脸识别功能,它可以为你提供面部标志的位置,比如鼻子,眼睛等,然后简单地将CameraPreview与CustomPaint(foregroundPainter: widget )堆叠在一起,在这个小部件中,你可以使用不同的标志作为坐标绘制滤镜,比如眼镜,胡须或任何你想要的在相机预览中面部的正确位置。

Google ML Kit也有人脸识别功能,可以生成地标,你可以为此编写自己的颤动插件。

您可以从实时摄像机预览中捕获帧,并重新格式化它们,然后将其作为字节缓冲区传输到ML套件或ML vision。我目前正在编写一个颤动插件的ML套件姿态检测与现场捕获,所以如果你有任何具体的问题,让我知道。

然后,您必须合并两个曲面,并以适当的格式保存到文件中。这对我来说是未知的领域,所以我不能提供这部分的任何细节。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65430782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档