iOS人臉識(shí)別(檢測)

iOS的CoreImage已經(jīng)內(nèi)建了人臉檢測的接口,檢測準(zhǔn)確率一般,尤其是側(cè)臉,基本上就檢測不到。不過跟其他同類產(chǎn)品比較,也還算是不相上下吧。用起來很簡單:

[objc]view plaincopy

CIImage*?image?=?[CIImageimageWithCGImage:aImage.CGImage];

NSDictionary??*opts?=?[NSDictionarydictionaryWithObject:CIDetectorAccuracyHigh

forKey:CIDetectorAccuracy];

CIDetector*?detector?=?[CIDetectordetectorOfType:CIDetectorTypeFace

context:nil

options:opts];

//得到面部數(shù)據(jù)

NSArray*?features?=?[detectorfeaturesInImage:image];

最后的features中就是檢測到的全部臉部數(shù)據(jù),可以用如下方式計(jì)算位置:

[objc]view plaincopy

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);

}

注意,檢測到的位置是臉部數(shù)據(jù)在圖片上的坐標(biāo)(在uiimage上的,不是uiimageview上的),如果需要在視圖上繪制范圍,則需要進(jìn)行坐標(biāo)轉(zhuǎn)換(y軸方向相反),并且也要注意圖片在視圖上的縮放等。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容