iOS 開發技術之人臉識別
前言
作為一名iOS開發人員,我覺得第一步是能夠基本模仿一個APP,完成別人APP的介面搭建;第二步,是儘量學會轉載,學習別人的部落格和技術;第三步,是學會原創,學著翻譯官方文件,而不是一味汲取別人消化好的食糧。
而我,尚在第一層。學習是個艱難的過程,自制力是壓力之一,愛好是催化劑,小有所成大概就是最好的鼓勵吧。
今天想轉載的技術是“人臉識別”···
說一下為什麼想學習這個。
可能自己真的很喜歡“產品”這個詞,出於一個iOS開發人員的基本素養,習慣去欣賞一個APP,習慣去剖析一個APP的基本構成和它最吸引人的一個或幾個功能。
市場上很多美圖類APP,大同小異,但是FaceU卻使我眼前一亮,它的特色在於人臉識別方面,雖然美妝類APP能夠識別人的五官進行美化,但是卻是靜態的,比如某秀出品的美妝相機,天天P圖的”瘋狂變裝”功能都是靜態的,需要照片出來之後後期加工上去的美瞳,妝面。
但是FaceU不同。
實時人臉識別,五官捕捉,然後加上動畫效果,可以錄小視訊,可以拍照,最重要的是還支援美顏、濾鏡,不用專業攝像頭,就可以自己做“主播”。
我經常用這款軟體哄小朋友,逗小孩子玩,以至於我的手機一大半都是小朋友照的美麗的或是帥氣的照片,在他們眼中的樂趣大概就是這樣:愛不釋手,樂到捧腹。
我想說的
我自認為一款好的APP是很少需要打廣告的,就像去別的地方旅行吃到那些蒼蠅小館的美食,會回來推薦給自己的朋友那種感覺一樣,是靠口碑。這款APP我不管是推薦還是朋友圈的隱性宣傳,數數也有很多人下載並使用了,一傳十,十傳百,就是這樣火起來。這就是好APP的魅力。
在北京的時間,發現好多小型創業公司,如雨後春筍長勢甚猛,可是網際網路的浪潮是否能夠推動創業者的成功還亟待觀察,這其中不少創業公司倒閉,小企業破產,網際網路的冬天似乎有點冷,但是還是有FaceU這樣的公司勢頭崛起,我想,實力和口碑就是創業公司最大的王牌吧。
希望所有創業公司能夠秉承最初的夢想,闖出一番自己的天地。
言歸正傳
因為FacuU的影響加之身邊有朋友工作是人臉識別類的APP的,所以想了解一下這個技術。
寫這篇部落格的目的就是分享人臉識別這項技術,當然不能遺忘。按慣例,首先附上原文地址,然後臭不要臉的複製貼上到自己的部落格來。哈哈哈,沒辦法,我還是iOS開發段位的第一層。
部落格正文
iOS的CoreImage已經內建了人臉檢測的介面,檢測準確率一般,尤其是側臉,基本上就檢測不到。不過跟其他同類產品比較,也還算是不相上下吧。用起來很簡單:
CIImage* image = [CIImage imageWithCGImage:aImage.CGImage]; NSDictionary *opts = [NSDictionary dictionaryWithObject:CIDetectorAccuracyHigh forKey:CIDetectorAccuracy]; CIDetector* detector = [CIDetector detectorOfType:CIDetectorTypeFace context:nil options:opts]; //得到面部資料 NSArray* features = [detector featuresInImage:image];
最後的features中就是檢測到的全部臉部資料,可以用如下方式計算位置:
for (CIFaceFeature *f in features)
{
CGRect aRect = f.bounds;
NSLog(@"%f, %f, %f, %f", aRect.origin.x, aRect.origin.y, aRect.size.width, aRect.size.height);
//眼睛和嘴的位置
if(f.hasLeftEyePosition) NSLog(@"Left eye %g %g\n", f.leftEyePosition.x, f.leftEyePosition.y);
if(f.hasRightEyePosition) NSLog(@"Right eye %g %g\n", f.rightEyePosition.x, f.rightEyePosition.y);
if(f.hasMouthPosition) NSLog(@"Mouth %g %g\n", f.mouthPosition.x, f.mouthPosition.y);
}
注意,檢測到的位置是臉部資料在圖片上的座標(在UIImage上的,不是UIImageView上的),如果需要在檢視上繪製範圍,則需要進行座標轉換(y軸方向相反),並且也要注意圖片在檢視上的縮放等。
後話
之前做過濾鏡的demo,所以知道CoreImage,我感覺很強大,建議想了解的朋友可以找一下官方文件。(ps:找完請分享給我麼麼噠)