基于OpenCV实现的Android移动端口红AR
2017-06-28 09:04
316 查看
这个是我们去年想做的一个项目,后来因为各种原因就此搁浅了。但是算法部分我已经把它基本成型了,对各种光线条件下都可以准确的找到嘴唇,提取唇形、然后通过色彩渲染自动变化颜色,实现各种颜色的口红实时渲染,基于OpenCV与Android NDK完成的算法演示。
算法的主要思路首先是通过人脸检测寻找到人脸区域,一旦找到之后就会使用跟踪算法对人脸部位进行跟踪、人脸检测算法可以选择Face++或者OpenCV自带的算法,然后对下部区域进行嘴唇检测,找到之后,选择不同光照下的嘴唇图像,提取ROI如下:
![](https://img-blog.csdn.net/20170628085351622?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamlhMjAwMDM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
提取了超过1000张作为算法测试,根据这些提取得到上部唇形
![](https://img-blog.csdn.net/20170628085457947?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamlhMjAwMDM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
进一步处理之后得到下部唇形状
![](https://img-blog.csdn.net/20170628085525681?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamlhMjAwMDM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
对整个唇形数据处理之后得到
![](https://img-blog.csdn.net/20170628085617105?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamlhMjAwMDM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
基本的命中率在99%左右,通过缓存等技术手段,达到实时不丢帧渲染,最终的渲染效果如下: 红色简单着色
![](https://img-blog.csdn.net/20170628085905816?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamlhMjAwMDM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
蓝色简单着色
![](https://img-blog.csdn.net/20170628085938296?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamlhMjAwMDM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
算法不足之处
渲染这块后来因为各种原因,没有去做,主要是没有钱继续下去,就成这个样子!但是整个基于OpenCV实现的移动端AR口红渲染整个实现步骤基本如此!
欢迎大家留言!!!
算法的主要思路首先是通过人脸检测寻找到人脸区域,一旦找到之后就会使用跟踪算法对人脸部位进行跟踪、人脸检测算法可以选择Face++或者OpenCV自带的算法,然后对下部区域进行嘴唇检测,找到之后,选择不同光照下的嘴唇图像,提取ROI如下:
提取了超过1000张作为算法测试,根据这些提取得到上部唇形
进一步处理之后得到下部唇形状
对整个唇形数据处理之后得到
基本的命中率在99%左右,通过缓存等技术手段,达到实时不丢帧渲染,最终的渲染效果如下: 红色简单着色
蓝色简单着色
算法不足之处
渲染这块后来因为各种原因,没有去做,主要是没有钱继续下去,就成这个样子!但是整个基于OpenCV实现的移动端AR口红渲染整个实现步骤基本如此!
欢迎大家留言!!!
相关文章推荐
- 基于标记的AR的opencv实现(一)
- 基于标记的AR的OpenCV实现:动态视频输入
- Android基于hover组件实现监控鼠标移动事件的方法
- Schwarzer教你用OpenCV实现基于标记的AR
- 基于标记的AR的OpenCV实现(二)
- Android 滴滴打车,打车软件客户端实现小车在地图上平滑移动的实现;基于高德地图V4.1.1+
- 5. Android - 基于EasyAR SDK的AR红包的实现
- 基于Android移动终端的微型餐饮管理系统的设计与实现4——Android基础
- android端基于openCV实现局部放大
- 基于Android实现随手指移动的ImageView
- 基于Android移动终端的微型餐饮管理系统的设计与实现3-技术整合
- 基于标记的AR的opencv实现(一)
- Android下使用jni实现基于opencv与dlib的68关键点检测
- Android基于mAppWidget实现手绘地图(十一)–移动地图到某个坐标
- 基于标记的AR的OpenCV实现
- 基于Android移动终端的微型餐饮管理系统的设计与实现1-简介
- 基于Android移动终端的微型餐饮管理系统的设计与实现2-侧滑菜单
- [置顶] Android移动开发-在Android项目里调用基于百度地图API实现定位
- 滴滴打车,打车软件app实现。小车在地图上平滑移动的实现,Android,基于高德地图开发实现