這個是我們去年想做的一個項目,後來因為各種原因就此擱淺了。但是算法部分我已經把它基本成型了,對各種光線條件下都可以準确的找到嘴唇,提取唇形、然後通過色彩渲染自動變化顔色,實作各種顔色的口紅實時渲染,基于OpenCV與Android NDK完成的算法示範。
算法的主要思路首先是通過人臉檢測尋找到人臉區域,一旦找到之後就會使用跟蹤算法對人臉部位進行跟蹤、人臉檢測算法可以選擇Face++或者OpenCV自帶的算法,然後對下部區域進行嘴唇檢測,找到之後,選擇不同光照下的嘴唇圖像,提取ROI如下:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0NXYFhGd192UvwVe0lmdhJ3ZvwFM38CXlZHbvN3cpR2Lc1TPB10QGtWUCpEMJ9CXsxWam9CXwADNvwVZ6l2c052bm9CXUJDT1wkNhVzLcRnbvZ2Lc1TTE10dBpWToxWbhZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39jMyYTM1MTN4ADOyYDM3EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
提取了超過1000張作為算法測試,根據這些提取得到上部唇形
進一步處理之後得到下部唇形狀
對整個唇形資料處理之後得到
基本的命中率在99%左右,通過緩存等技術手段,達到實時不丢幀渲染,最終的渲染效果如下: 紅色簡單着色
藍色簡單着色
算法不足之處
渲染這塊後來因為各種原因,沒有去做,主要是沒有錢繼續下去,就成這個樣子!但是整個基于OpenCV實作的移動端AR口紅渲染整個實作步驟基本如此!
<b>歡迎大家留言!!!</b>