不是最容易回答的问题,但是......
我会试一试,让我们看看结果如何。
首先,您应该填写有关问题中给出的陈述的更多详细信息,尤其是您在此处要说的内容:
我知道有 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,如果你有正确的背景和态度,加上良好的学习能力,我相信你将能够将它们拼凑起来.
希望这不会离您的核心问题太远,但我知道没有捷径比我已经提到的更多。