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