美顏特效SDK功能樣本
- (void)initBeautyEngine
{
// 初始化引擎配置資訊對象
QueenEngineConfigInfo *configInfo = [QueenEngineConfigInfo new];
// 填寫licenseKey和licenseFile,也可以在應用的Info.plist檔案加入AlivcLicenseKey欄位和AlivcLicenseFile欄位,內容類型為字串,填入相應值即可。優先順序:configInfo指定>Info.plist指定
configInfo.licenseKey = @"xxx";
// 相當於mainBundlePath的檔案路徑,樣本工程的crt檔案放在跟目錄,所以直接填寫檔案名稱即可。
configInfo.licenseFile = @"AliVideoCert.crt";
// 設定資源根目錄
NSString *bundlPath = [[NSBundle mainBundle] bundlePath];
bundlPath = [bundlPath stringByAppendingPathComponent:@"Contents/Resources/res"];
configInfo.resRootPath = bundlPath;
// 引擎初始化
self.beautyEngine = [[QueenEngine alloc] initWithConfigInfo:configInfo];
self.beautyEngine.delegate = self;
[self testBaseFaceBeauty];
[self testAdvancedFaceBeauty];
[self testFaceMakeup];
[self testFaceShape];
[self testBodyShape];
[self testFilter];
[self testSticker];
[self testGreenScreenOrBlueScreenCutout];
[self testAutoFilter];
[self testGestureDetect];
// [self testBackgroundCutout];
// [self testDebug];
}
- (void)testBaseFaceBeauty
{
// 開啟磨皮銳利化功能開關
// 第三個參數為基礎美顏的模式,設定為kBMSkinBuffing_Natural,則美顏的效果更自然,細節保留更多;設定為kQueenBeautyFilterModeSkinBuffing_Strong,則效果更誇張,細節去除更多。
[self.beautyEngine setQueenBeautyType:kQueenBeautyTypeSkinBuffing enable:YES mode:kQueenBeautyFilterModeSkinBuffing_Natural];
// 設定磨皮係數
[self.beautyEngine setQueenBeautyParams:kQueenBeautyParamsSkinBuffing value:0.5f];
// 設定銳利化係數
[self.beautyEngine setQueenBeautyParams:kQueenBeautyParamsSharpen value:0.5f];
// 開啟美白功能開關
[self.beautyEngine setQueenBeautyType:kQueenBeautyTypeSkinWhiting enable:YES];
// 設定美白係數
[self.beautyEngine setQueenBeautyParams:kQueenBeautyParamsWhitening value:0.5f];
}
- (void)testAdvancedFaceBeauty
{
// 開啟進階美顏功能開關
[self.beautyEngine setQueenBeautyType:kQueenBeautyTypeFaceBuffing enable:YES];
// 設定去眼袋係數
[self.beautyEngine setQueenBeautyParams:kQueenBeautyParamsPouch value:0.5f];
// 設定去法令紋係數
[self.beautyEngine setQueenBeautyParams:kQueenBeautyParamsNasolabialFolds value:0.5f];
// 設定白牙係數
[self.beautyEngine setQueenBeautyParams:kQueenBeautyParamsWhiteTeeth value:0.5f];
// 設定口紅係數
[self.beautyEngine setQueenBeautyParams:kQueenBeautyParamsLipstick value:0.5f];
// 設定腮紅係數
[self.beautyEngine setQueenBeautyParams:kQueenBeautyParamsBlush value:0.5f];
// 設定口紅色相係數
[self.beautyEngine setQueenBeautyParams:kQueenBeautyParamsLipstickColorParam value:0.1f];
// 設定口紅飽和度係數
[self.beautyEngine setQueenBeautyParams:kQueenBeautyParamsLipstickGlossParam value:0.5f];
// 設定口紅明度係數
[self.beautyEngine setQueenBeautyParams:kQueenBeautyParamsLipstickBrightnessParam value:0.5f];
// 設定亮眼係數
[self.beautyEngine setQueenBeautyParams:kQueenBeautyParamsBrightenEye value:0.5f];
// 設定紅潤係數
[self.beautyEngine setQueenBeautyParams:kQueenBeautyParamsSkinRed value:0.5f];
// 設定去皺紋係數
[self.beautyEngine setQueenBeautyParams:kQueenBeautyParamsWrinkles value:0.2f];
// 設定去暗沉係數
[self.beautyEngine setQueenBeautyParams:kQueenBeautyParamsBrightenFace value:0.2f];
}
- (void)testSkinHSV
{
// 開啟HSV調節功能開關
[self.beautyEngine setQueenBeautyType:kQueenBeautyTypeHSV enable:YES];
// 設定飽和度係數
[self.queenEngine setQueenBeautyParams:kQueenBeautyParamsHSVSaturation value:0.2f];
// 設定對比係數
[self.queenEngine setQueenBeautyParams:kQueenBeautyParamsHSVContrast value:0.2f];
}
- (void)testFaceMosaicing
{
// 開啟臉部馬賽克功能開關
[self.beautyEngine setQueenBeautyType:kQueenBeautyTypeFaceMosaicing enable:YES];
// 設定馬賽克大小係數
[self.queenEngine setQueenBeautyParams:kQueenBeautyParamsFaceMosaicing value:0.2f];
}
- (void)testFaceMakeup
{
// 開啟美妝功能開關
// 第三個參數是美妝的模式,目前僅對眉毛有作用,設定為BeautyFilterMode.kBMFaceMakeup_High,眉毛的形變會更明顯,設定為kQueenBeautyFilterModeFaceMakeup_Baseline,眉毛
的形變會收斂一點
[self.beautyEngine setQueenBeautyType:kQueenBeautyTypeMakeup enable:YES mode:kQueenBeautyFilterModeFaceMakeup_Baseline];;
BOOL makeupWhole = true;
if (makeupWhole)
{
// 設定美妝整妝效果,資源路徑也可以是資源的絕對路徑
[self.beautyEngine setMakeupWithType:kQueenBeautyMakeupTypeWhole paths:@[@"makeup/whole/huoli.2.31.png"] blendType:kQueenBeautyBlendLabMix];
// 設定美妝整妝效果的透明度,目前female參數的值統一傳YES/true,男性妝容還在最佳化中
[self.beautyEngine setMakeupAlphaWithType:kQueenBeautyMakeupTypeWhole female:YES alpha:1.0];
}
else
{
// 設定美妝局部妝效果:(註:設定局部妝後,如果之前設定了整妝,整妝會失效。即整妝和局部妝不能共存,但每個局部妝之間可以疊加使用,而整妝設定單個素材即可實現全臉上妝,但是無法調節各部位細節)
// 設定美妝高光效果,資源路徑也可以是資源的絕對路徑
[self.beautyEngine setMakeupWithType:kQueenBeautyMakeupTypeHighlight paths:@[@"makeup/highlight/highlight.2.12.png"] blendType:kQueenBeautyBlendOverlay];
// 設定美妝高光效果的透明度,目前female參數的值統一傳YES/true,男性妝容還在最佳化中
[self.beautyEngine setMakeupAlphaWithType:kQueenBeautyMakeupTypeHighlight female:YES alpha:0.4];
// 設定美妝美瞳效果,資源路徑也可以是資源的絕對路徑
[self.beautyEngine setMakeupWithType:kQueenBeautyMakeupTypeEyeball paths:@[@"makeup/eyeball/milanda.2.1.png"] blendType:kQueenBeautyBlendLighten];
// 設定美妝美瞳效果的透明度,目前female參數的值統一傳YES/true,男性妝容還在最佳化中
[self.beautyEngine setMakeupAlphaWithType:kQueenBeautyMakeupTypeEyeball female:YES alpha:1.0];
// 設定美妝口紅效果,資源路徑也可以是資源的絕對路徑
[self.beautyEngine setMakeupWithType:kQueenBeautyMakeupTypeMouth paths:@[@"makeup/mouth_wumian/standout.2.31.png"] blendType:kQueenBeautyBlendLabMix];
// 設定美妝口紅效果的透明度,目前female參數的值統一傳YES/true,男性妝容還在最佳化中
[self.beautyEngine setMakeupAlphaWithType:kQueenBeautyMakeupTypeMouth female:YES alpha:0.5];
// 設定美妝臥蠶效果,目前採用內建素材,不支援定製
[self.beautyEngine setMakeupWithType:kQueenBeautyMakeupTypeWocan paths:@[@"makeup/wocan.png"] blendType:kQueenBeautyBlendCurve];
// 設定美妝臥蠶效果的透明度,目前female參數的值統一傳YES/true,男性妝容還在最佳化中
[self.beautyEngine setMakeupAlphaWithType:kQueenBeautyMakeupTypeWocan female:YES alpha:0.2];
// 設定美妝眉毛效果,資源路徑也可以是資源的絕對路徑
[self.beautyEngine setMakeupWithType:kQueenBeautyMakeupTypeEyeBrow paths:@[@"makeup/eyebrow/biaozhunmei.2.31.png"] blendType:kQueenBeautyBlendLabMix];
// 設定美妝眉毛效果的透明度,目前female參數的值統一傳YES/true,男性妝容還在最佳化中
[self.beautyEngine setMakeupAlphaWithType:kQueenBeautyMakeupTypeEyeBrow female:YES alpha:0.6];
// 設定美妝腮紅效果,資源路徑也可以是資源的絕對路徑
[self.beautyEngine setMakeupWithType:kQueenBeautyMakeupTypeBlush paths:@[@"makeup/blush/weixun.2.31.png"] blendType:kQueenBeautyBlendLabMix];
// 設定美妝腮紅效果的透明度,目前female參數的值統一傳YES/true,男性妝容還在最佳化中
[self.beautyEngine setMakeupAlphaWithType:kQueenBeautyMakeupTypeBlush female:YES alpha:0.8];
// 設定美妝眼影效果,資源路徑也可以是資源的絕對路徑
[self.beautyEngine setMakeupWithType:kQueenBeautyMakeupTypeEyeShadow paths:@[@"makeup/eyeshadow/naichazong.2.31.png"] blendType:kQueenBeautyBlendLabMix];
// 設定美妝眼影效果的透明度,目前female參數的值統一傳YES/true,男性妝容還在最佳化中
[self.beautyEngine setMakeupAlphaWithType:kQueenBeautyMakeupTypeEyeShadow female:YES alpha:0.7];
// 設定美妝眼線效果,資源路徑也可以是資源的絕對路徑
[self.beautyEngine setMakeupWithType:kQueenBeautyMakeupTypeEyeliner paths:@[@"makeup/eyeliner_292929/wenrou.2.31.png"] blendType:kQueenBeautyBlendLabMix];
// 設定美妝眼線效果的透明度,目前female參數的值統一傳YES/true,男性妝容還在最佳化中
[self.beautyEngine setMakeupAlphaWithType:kQueenBeautyMakeupTypeEyeliner female:YES alpha:0.5];
// 設定美妝睫毛效果,資源路徑也可以是資源的絕對路徑 [self.beautyEngine setMakeupWithType:kQueenBeautyMakeupTypeEyelash paths:@[@"makeup/eyelash/yesheng.2.31.png"] blendType:kQueenBeautyBlendLabMix];
// 設定美妝睫毛效果的透明度,目前female參數的值統一傳YES/true,男性妝容還在最佳化中
[self.beautyEngine setMakeupAlphaWithType:kQueenBeautyMakeupTypeEyelash female:YES alpha:0.5];
}
// // 清除美妝效果
// [self.beautyEngine resetAllMakeupType];
// // 關閉美妝功能開關
// [self.beautyEngine setQueenBeautyType:kQueenBeautyTypeMakeup enable:NO];
/*
建議採用組合妝來替換整妝的效果,可以調節各部分細節,下面提供幾種組合妝的模式:
1、微醺妝:
眼影(makeup/eyeshadow/naichazong.2.31.png 透明度:0.7)、
睫毛(makeup/eyelash/yesheng.2.31.png 透明度:0.5)、
腮紅(makeup/blush/weixun.2.31.png 透明度:0.8)、
眼線(makeup/eyeliner_292929/wenrou.2.31.png 透明度:0.5)、
口紅(makeup/mouth_wumian/standout.2.31.png 透明度:0.5)、
高光(makeup/highlight/highlight.2.12.png, 透明度:0.4)
2、雀斑妝:
眼影(makeup/eyeshadow/taohuafen.2.31.png 透明度:0.7)、
睫毛(makeup/eyelash/yesheng.2.31.png 透明度:0.5)、
腮紅(makeup/blush/cool.2.31.png 透明度:0.8)、
眼線(makeup/eyeliner_292929/guima.2.31.png 透明度:0.5)、
口紅(makeup/mouth_yaochun/nanguase.2.31.png 透明度:0.5)、
高光(makeup/highlight/highlight.2.12.png, 透明度:0.4)
3、活潑妝:
眼影(makeup/eyeshadow/tianchengse.2.31.png 透明度:0.7)、
睫毛(makeup/eyelash/lingdong.2.31.png 透明度:0.5)、
腮紅(makeup/blush/luori.2.31.png 透明度:0.8)、
眼線(makeup/eyeliner_292929/qizhi.2.31.png 透明度:0.5)、
口紅(makeup/mouth_yaochun/nanguase.2.31.png 透明度:0.5)、
高光(makeup/highlight/highlight.2.12.png, 透明度:0.4)
4、夜店妝:
眼影(makeup/eyeshadow/yeqiangwei.2.31.png 透明度:0.7)、
睫毛(makeup/eyelash/zhixing.2.31.png 透明度:0.5)、
腮紅(makeup/blush/shaonv.2.31.png 透明度:0.8)、
眼線(makeup/eyeliner_292929/wenrou.2.31.png 透明度:0.5)、
口紅(makeup/mouth_zirun/zhenggongse.2.31.png 透明度:0.5)、
高光(makeup/highlight/highlight.2.12.png, 透明度:0.4)
*/
}
- (void)testFaceShape
{
// 開啟美型功能開關
// 第三個參數為美型的模式,可以設定為kQueenBeautyFilterModeFaceShape_Baseline、kQueenBeautyFilterModeFaceShape_Main、
kQueenBeautyFilterModeFaceShape_High、kQueenBeautyFilterModeFaceShape_Max四種模式,形變的幅度會依次變強
[self.beautyEngine setQueenBeautyType:kQueenBeautyTypeFaceShape enable:YES mode:kQueenBeautyFilterModeFaceShape_Main];
// 設定大眼係數
[self.beautyEngine setFaceShape:kQueenBeautyFaceShapeTypeBigEye value:1.0f];
// 設定髮際線係數
[self.beautyEngine setFaceShape:kQueenBeautyFaceShapeTypeHairLine value:1.0f];
// 設定嘴角上揚(微笑)係數
[self.beautyEngine setFaceShape:kQueenBeautyFaceShapeTypeSmile value:1.0f];
}
- (void)testBodyShape
{
// 開啟美型功能開關
[self.beautyEngine setQueenBeautyType:kQueenBeautyTypeBodyShape enable:YES];
// 設定長腿係數
[self.beautyEngine setFaceShape:kQueenBeautyBodyShapeTypeLongLag value:1.0f];
// // 設定小頭係數
// [self.beautyEngine setFaceShape:kQueenBeautyBodyShapeTypeSmallHead value:1.0f];
}
- (void)testFilter
{
// 開啟濾鏡功能開關
[self.beautyEngine setQueenBeautyType:kQueenBeautyTypeLUT enable:YES];
// 設定濾鏡資源,也可以是資源的絕對路徑
[self.beautyEngine setLutImagePath:@"lookups/ly1.png"];
// 設定濾鏡強度
[self.beautyEngine setQueenBeautyParams:kQueenBeautyParamsLUT value:0.8f];
}
- (void)testSticker
{
// 添加貼紙,也可以是資源的絕對路徑
[self.beautyEngine addMaterialWithPath:@"sticker/1"];
// // 添加貼紙,貼紙圖層從下往上疊加
// [self.beautyEngine addMaterialWithPath:@"sticker/2"];
// // 刪除貼紙
// [self.beautyEngine removeMaterialWithPath:@"sticker/1"];
// [self.beautyEngine removeMaterialWithPath:@"sticker/2"];
}
- (void)testGreenScreenOrBlueScreenCutout
{
// 開啟綠幕摳圖功能
NSString *backgroundImgPath = @"background/red.png";//也可以是資源的絕對路徑
BOOL enableBlue = NO;
float threshold = 0;
BOOL autoThreshold = YES;
[self.beautyEngine setGreenScreen:backgroundImgPath blueScreenEnabled:enableBlue threshold:threshold autoThresholdEnabled:autoThreshold];
// // 開啟藍幕摳圖功能
// enableBlue = YES;
// [self.beautyEngine setGreenScreen:backgroundImgPath blueScreenEnabled:enableBlue threshold:threshold autoThresholdEnabled:autoThreshold];
// // 取消幕布摳圖功能
// [self.beautyEngine setGreenScreen:nil blueScreenEnabled:enableBlue threshold:threshold autoThresholdEnabled:autoThreshold];
}
- (void)testBackgroundCutout
{
// 開啟智能摳像前,可以根據需要設定其效能模式,包括自動模式、最佳畫質模式、平衡模式、最佳效能模式,如果不設定則預設為自動模式
// [self.beautyEngine setSegmentPerformanceMode:kQueenSegmentPMAuto];
// // 人像背景虛化開啟
// [self.beautyEngine setQueenBeautyType:kQueenBeautyTypeBackgroundProcess enable:YES];
// // 開啟後預設是背景虛化,可以通過如下API設定為背景透明,適用於將輸出當做前景,自行合成背景的場合
// [self.beautyEngine setSegmentBackgroundProcessType:kQueenBackgroundTransparent];
// // 人像背景虛化關閉
// [self.beautyEngine setQueenBeautyType:kQueenBeautyTypeBackgroundProcess enable:NO];
//
NSString *backgroundResPath = @"background/static_changlang";//也可以是資源的絕對路徑
// 替換人像背景為靜態圖,相同資源不能重複添加
[self.beautyEngine addMaterialWithPath:backgroundResPath];
// // 取消人像背景設定為靜態圖
// [self.beautyEngine removeMaterialWithPath:backgroundResPath];
}
- (void)testAutoFilter
{
// 開啟智能動態最佳化:
[self.beautyEngine setQueenBeautyType:kQueenBeautyTypeAutoFilter enable:YES];
// 關閉智能動態最佳化:
[self.beautyEngine setQueenBeautyType:kQueenBeautyTypeAutoFilter enable:NO];
}
- (void)testGestureDetect
{
// 開啟手勢檢測
[self.beautyEngine setQueenBeautyType:kQueenBeautyTypeHandGestureDetect enable:YES];
// // 關閉手勢檢測
// [self.beautyEngine setQueenBeautyType:kQueenBeautyTypeHandGestureDetect enable:NO];
// 設定代理 self.beautyEngine.delegate = self;
}
- (void)testSportDetect
{
// 開啟動作檢測
[self.beautyEngine setQueenBeautyType:kQueenBeautyTypeBodyDetect enable:YES];
// 清空動作計數
[self.beautyEngine clearBodySportCount];
// 設定需要檢測計數的動作類型,0: 姿勢識別; 1: 跳繩; 2: 開合跳; 3: 深蹲; 4: 手臂劃圈; 5: 菱形伸展; 6: 伸展擴胸; 7: 仰臥起坐; 8: 伏地挺身; 9: 跪姿伏地挺身
[self.beautyEngine setBodyDetectSportType:0];
// // 關閉動作檢測
// [self.beautyEngine setQueenBeautyType:kQueenBeautyTypeBodyDetect enable:NO];
// 設定代理
self.beautyEngine.delegate = self;
}
- (void)queenEngine:(QueenEngine *)engine didDetectBodyInfo:(QEBodyInfoData *)bodyInfoData
{
if (bodyInfoData.bodySportType <= 0)
{
/*
{{1, Normal}, //直立
{2, HandsUp}, //舉雙手
{3, HandsOnHead}, //雙手比心/摸頭
{4, LHandUp}, //舉左手
{5, RHandUp}, //舉右手
{6, HandLeft}, //向左1
{7, HandRight}, //向右1
{8, DaShape}, //大字型
{9, HandLeft2},//叉腰向左2
{10, HandRight2},//叉腰向右2
{11, SuperLeft}, //超人左
{12, SuperRight}, //超人右
{13, Akimbo}} //叉腰
*/
NSLog(@"識別到姿勢類型: %ld", (long)bodyInfoData.bodyPoseType);
}
else
{
NSLog(@"識別到動作類型:%ld,動作計數:%ld", (long)bodyInfoData.bodySportType, (long)bodyInfoData.sportCount);
}
}
- (void)testReHairColor
{
// 開啟換髮色功能開關
[self.beautyEngine setQueenBeautyType:kQueenBeautyTypeHairColor enable:YES];
// 設定頭髮顏色
[self.beautyEngine setHairColorWithRed:0.3137254901960784
withGreen:0.3137254901960784
withBlue:0.6274509803921569];
/*
* 參考顏色:
* ('blue', [0.3137254901960784, 0.3137254901960784, 0.6274509803921569])
* ('purple', [0.6078431372549019, 0.35294117647058826, 0.6274509803921569])
* ('sky', [0.3333333333333333, 0.5490196078431373, 0.5490196078431373])
* ('yellow', [0.6470588235294118, 0.5294117647058824, 0.35294117647058826])
* ('green', [0.37254901960784315, 0.5882352941176471, 0.3137254901960784])
* ('original', [0.39215686274509803, 0.3333333333333333, 0.3137254901960784])
* ('red', [0.5098039215686274, 0.27450980392156865, 0.27450980392156865])
*/
}
- (void)testARWriting
{
// 開啟AR隔空寫字功能開關
[self.beautyEngine setARWriting:YES mode:0];
}
- (void)testDebug
{
// 展示Face Service特徵點
[self.beautyEngine showFaceDetectPoint:YES];
// 展示美妝三角剖分資訊, 需要先開啟美妝功能
[self.beautyEngine showMakeupLine:YES];
// 展示手部識別特徵點
[self.beautyEngine showHandDetectPoint:YES];
}
- (CVPixelBufferRef)getProcessedPixelBufferRefWithCurrentPixelBufferRef:(CVPixelBufferRef)pixelBufferRef
{
if (self.beautyEngine && pixelBufferRef)
{
QEPixelBufferData *bufferData = [QEPixelBufferData new];
bufferData.bufferIn = pixelBufferRef;
bufferData.bufferOut = pixelBufferRef;
#if kEnableCustomSettingImgAngle
bufferData.inputAngle = self.cameraRotate; //要正確傳入pixelBufferRef的方向,否則Face Service會失敗,如果不知道pixelBufferRef的方向,可參考此demo屬性cameraRotate取值的方法
bufferData.outputAngle = self.cameraRotate; //一般和inputAngle取值一樣就可以了
#endif
// 對pixelBuffer進行影像處理,輸出處理後的buffer
kQueenResultCode resultCode = [self.beautyEngine processPixelBuffer:bufferData];//執行此方法的線程需要始終是同一條線程
if (resultCode == kQueenResultCodeOK && bufferData.bufferOut)
{
return bufferData.bufferOut;
}
else if (resultCode == kQueenResultCodeInvalidLicense)
{
NSLog(@"license校正失敗。");
}
else if (resultCode == kQueenResultCodeInvalidParam)
{
NSLog(@"非法參數");
}
else if (resultCode == kQueenResultCodeNoEffect)
{
NSLog(@"沒有開啟任何特效");
}
return pixelBufferRef;
}
else
{
return pixelBufferRef;
}
}
- (void)captureReset
{
if (self.beautyEngine)
{
//釋放queen,確保當前線程與執行processPixelBuffer:是同一條線程
[self.beautyEngine destroyEngine];
self.beautyEngine = nil;
}
}
- (void)captureBegin
{
#if kEnableCustomSettingImgAngle
[self startRetainCameraRotate];
#endif
}
- (void)captureEnd
{
#if kEnableCustomSettingImgAngle
[self stopRetainCameraRotate];
#endif
}
#pragma mark - QueenEngineDelegate
- (void)queenEngine:(QueenEngine *)engine didDetectGesture:(QEGestureData *)gestureData
{
NSLog(@"識別到手勢類型:%ld,動作類型:%d", (long)gestureData.gesture, gestureData.action);
}
資料、紋理分離調用樣本
/**
通知QueenEngine處理回調紋理
*/
- (int)onProcessTexture:(int)texture textureWidth:(int)width textureHeight:(int)height
{
if (self.pushConfig.beautyOn && nil != self.queenEngine) {
QETextureData* textureData = [[QETextureData alloc] init];
textureData.inputTextureID = texture;
textureData.width = width;
textureData.height = height;
kQueenResultCode result = [self.beautyEngine processTexture:textureData];
if (result != kQueenResultCodeOK) {
NSLog(@"queen beauty processTexture error. code: %lu", result);
}
return textureData.outputTextureID;
}
return texture;
}
/**
通知QueenEngine檢測處理回調
*/
- (long)onDetectorProcessData:(long)data w:(int)w h:(int)h rotation:(int)rotation format:(int)format
{
if (self.pushConfig.beautyOn && nil != self.queenEngine) {
[self.beautyEngine updateInputDataAndRunAlg:(uint8_t*)data
withImgFormat:(kQueenImageFormat)(format)
withWidth:w
withHeight:h
withStride:0
withInputAngle:rotation
withOutputAngle:rotation
withFlipAxis:0];
}
return data;
}
/**
通知QueenEngine銷毀回調
*/
- (void)onDestory
{
if (nil != self.beautyEngine) {
[self.beautyEngine destroyEngine];
self.beautyEngine = nil;
}
}