基于tndroid及人脸识别的智能妆容搭配APP

2018-05-31 02:49徐可文张欢张永
商情 2018年14期

徐可文 张欢 张永

【摘要】本项目采用Opencv和java,基于Android studio平台上打造的一款智能妆容搭配APP。通过调用Android摄像头的接口捕捉到人脸,再通过Opencv图像处理检测到人脸的各个部位,由脸型与各部位的信息推荐多种妆容。并且会根据天气和特定节日进行妆容和服饰进行推荐。

【关键词】Opencv Java Android 智能推荐

一、系统核心功能实现

在进入APP的首页可以播放一些滚动的广告,广告内容来自于时尚界的各种流行元素,让用户了解时尚尖端的流行趋势。

(一)人脸训练

人脸训练过程是比较复杂的过程,检测特征采用haar特征,利用opencv库里自带的haar特征训练器,以及网络上的人脸训练图片,将图片进行预处理,然后使用预处理好的正样本、负样本,利用haar特征训练器,最终训练出人脸模型xml文件,这个xml文件是人脸识别准确率的关键,其他器官的训练与人脸训练步骤相同。

(二)人脸检测

图像处理部分采用opencv来实现,具体的实现原理:(1)使用CascadeClassifier类加载训练好的人脸检测XML模型文件:(2)将待检测图片转成灰度图片;(3)将灰度图片进行直方图均衡化处理;(4)借助训练好的人脸检测XML文件保存人脸部分;其他器官的檢测方法与人脸检测方法相同。核心代码如下:

camera>>image:

cvtColor(image,grayimage,CV BGR2GRAY):

Mat equalizedlmage:

equalizeHist(grayimage,equalizedImage)://直方图均衡化,提升亮度和对比度 Size minFeatureSize(30,30): int minNeighbors=3: vector

for(size t i=0:i

{Point center(face[i].x+face[i].width/2,face[i].y+face[i].height/2)://寻找人脸中心点

ellipse(image,center,Size(face[i].width/2,face[i].height/2),0,0,360,Scalar(0,255,0),4,8,0)://绘制人脸

}

imshow("picture",image):

if(waitKey(1)==q)

{

imageNumber++;

sprintf(filename,"%d.jpg",imageNumber):

imwrite(filename,image):

imshow(filename,image):

(三)照片美颜

照片美颜主要是人脸部分的美颜,对于照片中人脸部分美颜,可以采用人脸检测的方法确定美颜范围,也可以根据肤色检测的方法确定美颜范围,最终我们选择人脸检测的方法确定美颜范围。人脸美颜的重点包括:磨皮与美白(高亮)。磨皮算法:①对原图进行双边滤波;②使用滤波后的图像减去原图像;③对最终相减的图像进行高斯滤波;④使用原图像与高斯滤波后的图像混合光线。

美白算法:美白算法可以在磨皮算法的基础上使用图像锐化来处理

Mat kern=(Mat(3,3)<<0,-1,0,

1,6,-1,

0,-1,0):

filter2D(plusImage,plusImage,plusImage.depth(),kern)://图像锐化

以上就是图像锐化的具体操作,使用fiIter2D来对图像进行卷积运算,就可以达到美白的效果。照片美颜部分核心代码如下:

Mat image:

image=imread("2.jpg"):

resize(image,image,Size(image.cols/2,image.rows/2)): //x,y

imshow("原图",image):

face(image,faceImage):

smoothing(image,smoothingImage,60)://双边滤波

man(smoothingImage,skinImage):

plusimg(smoothingImage,skinImage,p]usImage)://合成图像

Mat kern=(Mat(3,3)<<0,-1,0,

1,6,-1,

0,-1,0):

filter2D(plusImage,plusImage,plusImage.depth(),kern)://图像锐

imshow("合成图",plusImage):

二、后台实现

该软件后台主要用Java实现,Java是一种面向对象的语言,所有的思维都可以站在面向对象的角度思考,并且Java的跨平台性能比较好。在数据管理方面主要采用mysql数据库,在服务器访问mysq]的时候可能会有并发问题和资源泄漏等问题,这个时候需要采用数据库连接池技术,并发访问需要使用线程安全等技术为用户数据访问提供保障。数据库中的表:用户信息表(保存用户的基本信息);服饰妆容信息表(保存各种风格的服饰妆容信息);视频信息表(保存各种美妆视频的信息)等。当捕获用户的照片之后,根据用户的脸部特征以及天气和节日情况,给不同年龄段的用户推荐不同的妆容和穿搭。

三、小结

在产品中设置了相应的其他软件的下载入口,提高关联软件的下载量。同时也为一些化妆品、服饰做推广,寻找试用者并做用户属性调查,并且还有直接跳出的广告页面。爱美之心,人皆有之,人类对美的追求随着文明的进步在不断提高,为了让年轻的我们在追随美的道路上更加宽阔,于是提出一款针对16-36岁的爱美用户打造一款集人脸识别美妆视频推荐和服饰搭配的APP,让追求时尚、爱美、有社交需求的女性呈现出好看的一面。通过美妆视频及服饰推荐,让她们变的更加自信。