徐可文 張歡 張永
【摘要】本項(xiàng)目采用Opencv和java,基于Android studio平臺(tái)上打造的一款智能妝容搭配APP。通過(guò)調(diào)用Android攝像頭的接口捕捉到人臉,再通過(guò)Opencv圖像處理檢測(cè)到人臉的各個(gè)部位,由臉型與各部位的信息推薦多種妝容。并且會(huì)根據(jù)天氣和特定節(jié)日進(jìn)行妝容和服飾進(jìn)行推薦。
【關(guān)鍵詞】Opencv Java Android 智能推薦
一、系統(tǒng)核心功能實(shí)現(xiàn)
在進(jìn)入APP的首頁(yè)可以播放一些滾動(dòng)的廣告,廣告內(nèi)容來(lái)自于時(shí)尚界的各種流行元素,讓用戶了解時(shí)尚尖端的流行趨勢(shì)。
(一)人臉訓(xùn)練
人臉訓(xùn)練過(guò)程是比較復(fù)雜的過(guò)程,檢測(cè)特征采用haar特征,利用opencv庫(kù)里自帶的haar特征訓(xùn)練器,以及網(wǎng)絡(luò)上的人臉訓(xùn)練圖片,將圖片進(jìn)行預(yù)處理,然后使用預(yù)處理好的正樣本、負(fù)樣本,利用haar特征訓(xùn)練器,最終訓(xùn)練出人臉模型xml文件,這個(gè)xml文件是人臉識(shí)別準(zhǔn)確率的關(guān)鍵,其他器官的訓(xùn)練與人臉訓(xùn)練步驟相同。
(二)人臉檢測(cè)
圖像處理部分采用opencv來(lái)實(shí)現(xiàn),具體的實(shí)現(xiàn)原理:(1)使用CascadeClassifier類加載訓(xùn)練好的人臉檢測(cè)XML模型文件:(2)將待檢測(cè)圖片轉(zhuǎn)成灰度圖片;(3)將灰度圖片進(jìn)行直方圖均衡化處理;(4)借助訓(xùn)練好的人臉檢測(cè)XML文件保存人臉部分;其他器官的檢測(cè)方法與人臉檢測(cè)方法相同。核心代碼如下:
camera>>image:
cvtColor(image,grayimage,CV BGR2GRAY):
Mat equalizedlmage:
equalizeHist(grayimage,equalizedImage)://直方圖均衡化,提升亮度和對(duì)比度 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)://尋找人臉中心點(diǎn) 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): ) (三)照片美顏 照片美顏主要是人臉部分的美顏,對(duì)于照片中人臉部分美顏,可以采用人臉檢測(cè)的方法確定美顏范圍,也可以根據(jù)膚色檢測(cè)的方法確定美顏范圍,最終我們選擇人臉檢測(cè)的方法確定美顏范圍。人臉美顏的重點(diǎn)包括:磨皮與美白(高亮)。磨皮算法:①對(duì)原圖進(jìn)行雙邊濾波;②使用濾波后的圖像減去原圖像;③對(duì)最終相減的圖像進(jìn)行高斯濾波;④使用原圖像與高斯濾波后的圖像混合光線。 美白算法:美白算法可以在磨皮算法的基礎(chǔ)上使用圖像銳化來(lái)處理 Mat kern=(Mat 1,6,-1, 0,-1,0): filter2D(plusImage,plusImage,plusImage.depth(),kern)://圖像銳化 以上就是圖像銳化的具體操作,使用fiIter2D來(lái)對(duì)圖像進(jìn)行卷積運(yùn)算,就可以達(dá)到美白的效果。照片美顏部分核心代碼如下: 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 1,6,-1, 0,-1,0): filter2D(plusImage,plusImage,plusImage.depth(),kern)://圖像銳 imshow("合成圖",plusImage): 二、后臺(tái)實(shí)現(xiàn) 該軟件后臺(tái)主要用Java實(shí)現(xiàn),Java是一種面向?qū)ο蟮恼Z(yǔ)言,所有的思維都可以站在面向?qū)ο蟮慕嵌人伎?,并且Java的跨平臺(tái)性能比較好。在數(shù)據(jù)管理方面主要采用mysql數(shù)據(jù)庫(kù),在服務(wù)器訪問(wèn)mysq]的時(shí)候可能會(huì)有并發(fā)問(wèn)題和資源泄漏等問(wèn)題,這個(gè)時(shí)候需要采用數(shù)據(jù)庫(kù)連接池技術(shù),并發(fā)訪問(wèn)需要使用線程安全等技術(shù)為用戶數(shù)據(jù)訪問(wèn)提供保障。數(shù)據(jù)庫(kù)中的表:用戶信息表(保存用戶的基本信息);服飾妝容信息表(保存各種風(fēng)格的服飾妝容信息);視頻信息表(保存各種美妝視頻的信息)等。當(dāng)捕獲用戶的照片之后,根據(jù)用戶的臉部特征以及天氣和節(jié)日情況,給不同年齡段的用戶推薦不同的妝容和穿搭。 三、小結(jié) 在產(chǎn)品中設(shè)置了相應(yīng)的其他軟件的下載入口,提高關(guān)聯(lián)軟件的下載量。同時(shí)也為一些化妝品、服飾做推廣,尋找試用者并做用戶屬性調(diào)查,并且還有直接跳出的廣告頁(yè)面。愛美之心,人皆有之,人類對(duì)美的追求隨著文明的進(jìn)步在不斷提高,為了讓年輕的我們?cè)谧冯S美的道路上更加寬闊,于是提出一款針對(duì)16-36歲的愛美用戶打造一款集人臉識(shí)別美妝視頻推薦和服飾搭配的APP,讓追求時(shí)尚、愛美、有社交需求的女性呈現(xiàn)出好看的一面。通過(guò)美妝視頻及服飾推薦,讓她們變的更加自信。