这个是我们去年想做的一个项目,后来因为各种原因就此搁浅了。但是算法部分我已经把它基本成型了,对各种光线条件下都可以准确的找到嘴唇,提取唇形、然后通过色彩渲染自动变化颜色,实现各种颜色的口红实时渲染,基于OpenCV与Android NDK完成的算法演示。
算法的主要思路首先是通过人脸检测寻找到人脸区域,一旦找到之后就会使用跟踪算法对人脸部位进行跟踪、人脸检测算法可以选择Face++或者OpenCV自带的算法,然后对下部区域进行嘴唇检测,找到之后,选择不同光照下的嘴唇图像,提取ROI如下:
提取了超过1000张作为算法测试,根据这些提取得到上部唇形
进一步处理之后得到下部唇形状
对整个唇形数据处理之后得到
基本的命中率在99%左右,通过缓存等技术手段,达到实时不丢帧渲染,最终的渲染效果如下: 红色简单着色
蓝色简单着色
算法不足之处
渲染这块后来因为各种原因,没有去做,主要是没有钱继续下去,就成这个样子!但是整个基于OpenCV实现的移动端AR口红渲染整个实现步骤基本如此!
欢迎大家留言!!!