FaceMaigcSDK旨在提供简单易用,功能强大,平台通用的视觉服务,让广大的移动开发者可以轻松使用最前沿的计算机视觉技术,从而搭建个性化的视觉应用。
FaceMagicSDK主要供以下开发人员使用
1 需要脸部识别数据应用程序开发人员。
2 需要在移动应用中视频中叠加各种炫酷特效的开发人员。
3 仅需要炫酷视频特效的开发人员。
设备系统必须IOS8及以上。
FaceMagicSDK是北京迈吉客科技公司旗下的新型视觉服务平台,旨在提供简单易用、功能强大、平台兼容的新一代视觉服务。
FaceMagic团队致力于将最新、性能最好、使用最方便的脸部识别技术和丰富炫酷特效商店提供给广大移动开发者和用户
2.2
导入资源文件 track_data.data/res.bundle
2.3
SDK不支持bitcode
向Build Settings → Linking → Enable Bitcode中设置NO。
`#import<MKEngine/FaceManager.h>
#import<FaceMagicDetection/MagicDetection.h>
@property(nonatomic, assign) MagicDetection *detection;`
_detection=[[Detectionalloc]initWithDetectionType:MagicDetectionType];(识别库类型设置)
`float scale = [UIScreen mainScreen].scale;
mfm2 = [FM2 new];
[mfm2 fm2Init:NULL Version:2];
[mfm2 startEngine:fm2DETECTTYPE];(识别库类型设置) //[mfm2 enableDDrawMode:true];//用FaceMagic做显示 不获取数据流 [mfm2 enableDDrawMode:false];//不用FaceMagic做显示 获取数据流 [mfm2 createScene:@"fm2" Width:[UIScreen mainScreen].bounds.size.widthscale Height:[UIScreen mainScreen].bounds.size.heightscale];
[mfm2 setInputFormat:fm2PixelFormatYUV420V Width:videoWidth Height:videoHeight Angle:videoAngle Name:@"fm2"];
[mfm2 enableOutputPixelBuffer];`
`CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);
GASYUVFrame yuvFrame;
if(CVPixelBufferLockBaseAddress(imageBuffer, 0) == kCVReturnSuccess)
{
GASYUVFrame yuvFrame;
size_t width = CVPixelBufferGetWidth(imageBuffer);
size_t height = CVPixelBufferGetHeight(imageBuffer);
if (!isYUVFormat) {
UInt8 *bufferPtr = (UInt8*)CVPixelBufferGetBaseAddress(imageBuffer);
yuvFrame.plane[0] = bufferPtr;
yuvFrame.width = (int32_t)width;
yuvFrame.height = (int32_t)height;
yuvFrame.format = FMPixelFormatBGRA;
}else {
UInt8 *bufferPtr = (UInt8 *)CVPixelBufferGetBaseAddressOfPlane(imageBuffer,0);
UInt8 *bufferPtr1 = (UInt8 *)CVPixelBufferGetBaseAddressOfPlane(imageBuffer,1);
yuvFrame.plane[0] = bufferPtr;
yuvFrame.plane[1] = bufferPtr1;
yuvFrame.width = (int32_t)width;
yuvFrame.height = (int32_t)height;
yuvFrame.format = FMPixelFormatYUV420V;
}
FMDRESULT detectResult = [mDetection processImageFrame:&yuvFrame];
//推送识别结果
[mfm2 pushDetectDataAS:detectResult.fmFaceCount facePoints:detectResult.fmFacePoints faceRect:detectResult.fmFaceRects faceOrient:detectResult.fmFaceOrients Name:@"fm2"];
//这是3D 特效 调用函数
if (_sensorActive) {
CMRotationMatrix deviceRotation = [self getRotationMatrix];
[mfm2 updateGyroDataX:deviceRotation.m31 Y:deviceRotation.m32 Z:-deviceRotation.m33];
}
//推送相机数据流 [mfm2 pushCameraPixelBuffer:imageBuffer Name:@"fm2" WithHandle:nil];
[self.cameraVideoView display];
CVPixelBufferUnlockBaseAddress(imageBuffer, 0);
}`
## 设置特效
path 的值是特效的本地地址
[[FaceManager sharedInstance] setEffect:path error:nil];
## 停止/销毁识别库和引擎
`
mDetection.canDetect=false;
[mDetection destory];
if(mfm2){
[mfm2 fm2Destroy];
}`