Face++以flow的方式实现人脸检测

我们使用人脸检测sdk进行人脸识别的过程大致可以分为下面几个步骤:

  1. 加载model文件并初始化接口
  2. 获取授权
  3. 调用人脸检测获取关键点
  4. 通知描画关键点
  5. 释放接口资源

这里的步骤3和4在接收到camera数据后反复执行。我们可以把这几个步骤抽象成数据流来进行封装。face++检测人脸后不断地生成人脸坐标数据,所以整个检测过程就是人脸坐标数据生产的过程,这里与flow的概念对应上了。

face++需要通过处理camera数据来获取人脸关键点,所以camera又是face++人脸检测api的数据提供者。下图体现了数据流动的过程:

 

看到这里大家也认为我们通过flow实现这个过程更合理了吧!下面我们分步来实现detect flow的创建.

第一步我们通过flow的builder创建一个flow:

 private val imageChannel = Channel<FacePPImage>()

flow {
            while (currentCoroutineContext().isActive) {
                emit(imageChannel.receive())
            }
        }

这里使用Channel来接收图像数据并发射。在detect flow处理图像数据前我们还需要一些初始化face++的工作,这些工作在onStart中处理。

flow.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mjlong123123

你的鼓励时我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值