123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- //
- // BDFaceAdjustParams.m
- // FaceSDKSample_IOS
- //
- // Created by Zhang,Jian(MBD) on 2020/12/1.
- // Copyright © 2020 Baidu. All rights reserved.
- //
- #import "BDFaceAdjustParams.h"
- #import "BDFaceAdjustParamsConstants.h"
- @implementation BDFaceAdjustParams
- - (instancetype)initWithJson:(NSString *)json {
- BDFaceAdjustParams *des = nil;
- NSDictionary *dic = nil;
- @try {
- if (json && [json isKindOfClass:[NSString class]]) {
- NSData *data = [json dataUsingEncoding:NSUTF8StringEncoding];
- if (data) {
- dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
- }
- }
- if (dic) {
- des = [self initWithDic:dic];
- }
- } @catch (NSException *exception) {
- des = nil;
- } @finally {
- // do nothing
- }
- return des;
- }
- - (BOOL)compareToParams:(BDFaceAdjustParams *)obj {
- if (!obj) {
- return NO;
- }
- if (self == obj) {
- return NO;
- }
- if (self.minLightIntensity == obj.minLightIntensity
- && self.maxLightIntensity == obj.maxLightIntensity
- && self.ambiguity == obj.ambiguity
- && self.leftEyeOcclusion == obj.leftEyeOcclusion
- && self.rightEyeOcclusion == obj.rightEyeOcclusion
- && self.noseOcclusion == obj.noseOcclusion
- && self.mouthOcclusion == obj.mouthOcclusion
- && self.leftFaceOcclusion == obj.leftFaceOcclusion
- && self.rightFaceOcclusion == obj.rightFaceOcclusion
- && self.lowerJawOcclusion == obj.lowerJawOcclusion
- && self.upAndDownAngle == obj.upAndDownAngle
- && self.leftAndRightAngle == obj.leftAndRightAngle
- && self.spinAngle == obj.spinAngle) {
- return YES;
- } else {
- return NO;
- }
- }
- - (id)copyWithZone:(nullable NSZone *)zone {
- BDFaceAdjustParams *another = [[BDFaceAdjustParams alloc] init];
- another.minLightIntensity = self.minLightIntensity;
- another.maxLightIntensity = self.maxLightIntensity;
- another.ambiguity = self.ambiguity;
-
- another.leftEyeOcclusion = self.leftEyeOcclusion;
- another.rightEyeOcclusion = self.rightEyeOcclusion;
- another.noseOcclusion = self.noseOcclusion;
- another.mouthOcclusion = self.mouthOcclusion;
- another.leftFaceOcclusion = self.leftFaceOcclusion;
- another.rightFaceOcclusion = self.rightFaceOcclusion;
- another.lowerJawOcclusion = self.lowerJawOcclusion;
-
- another.upAndDownAngle = self.upAndDownAngle;
- another.leftAndRightAngle = self.leftAndRightAngle;
- another.spinAngle = self.spinAngle;
- return another;
- }
- - (instancetype)initWithDic:(NSDictionary *)dic {
- if (!dic) {
- return nil;
- }
- if (![dic isKindOfClass:[NSDictionary class]]) {
- return nil;
- }
- if (dic.allKeys.count == 0) {
- return nil;
- }
- BDFaceAdjustParams *des = [super init];
- des.minLightIntensity = [self getIntValue:dic key:minLightIntensityKey];
- des.maxLightIntensity = [self getIntValue:dic key:maxLightIntensityKey];
- des.ambiguity = [self getFloatValue:dic key:ambiguityKey];
- des.leftEyeOcclusion = [self getFloatValue:dic key:leftEyeOcclusionKey];
- des.rightEyeOcclusion = [self getFloatValue:dic key:rightEyeOcclusionKey];
- des.noseOcclusion = [self getFloatValue:dic key:noseOcclusionKey];
- des.mouthOcclusion = [self getFloatValue:dic key:mouthOcclusionKey];
- des.leftFaceOcclusion = [self getFloatValue:dic key:leftFaceOcclusionKey];
- des.rightFaceOcclusion = [self getFloatValue:dic key:rightFaceOcclusionKey];
- des.lowerJawOcclusion = [self getFloatValue:dic key:lowerJawOcclusionKey];
- des.upAndDownAngle = [self getFloatValue:dic key:upAndDownAngleKey];
- des.leftAndRightAngle = [self getFloatValue:dic key:leftAndRightAngleKey];
- des.spinAngle = [self getFloatValue:dic key:spinAngleKey];
- return des;
- }
- - (float)getFloatValue:(NSDictionary *)dic key:(NSString *)key {
- if (!dic) {
- return 0;
- }
- if (![dic isKindOfClass:[NSDictionary class]]) {
- return 0;
- }
- if (![key isKindOfClass:[NSString class]]) {
- return 0;
- }
- NSString *value = dic[key];
- if (value && [value isKindOfClass:[NSNumber class]]) {
- return value.floatValue;
- }
- return 0.0f;
- }
- - (NSInteger)getIntValue:(NSDictionary *)dic key:(NSString *)key {
- if (!dic) {
- return 0;
- }
- if (![dic isKindOfClass:[NSDictionary class]]) {
- return 0;
- }
- if (![key isKindOfClass:[NSString class]]) {
- return 0;
- }
- NSString *value = dic[key];
- if (value && [value isKindOfClass:[NSNumber class]]) {
- return value.integerValue;
- }
- return 0;
- }
- - (NSDictionary *)toDic {
- NSDictionary *dic = nil;
- @try {
- dic = @{minLightIntensityKey : [self toNumber:self.minLightIntensity],
- maxLightIntensityKey : [self toNumber:self.maxLightIntensity],
- ambiguityKey : [self toNumber:self.ambiguity],
- leftEyeOcclusionKey : [self toNumber:self.leftEyeOcclusion],
- rightEyeOcclusionKey : [self toNumber:self.rightEyeOcclusion],
- noseOcclusionKey : [self toNumber:self.noseOcclusion],
- mouthOcclusionKey : [self toNumber:self.mouthOcclusion],
- leftFaceOcclusionKey : [self toNumber:self.leftFaceOcclusion],
- rightFaceOcclusionKey : [self toNumber:self.rightFaceOcclusion],
- lowerJawOcclusionKey : [self toNumber:self.lowerJawOcclusion],
- upAndDownAngleKey : [self toNumber:self.upAndDownAngle],
- leftAndRightAngleKey : [self toNumber:self.leftAndRightAngle],
- spinAngleKey : [self toNumber:self.spinAngle],
- };
- } @catch (NSException *exception) {
- dic = nil;
- } @finally {
- }
- return dic;
- }
- - (NSNumber *)toNumber:(float)value {
- NSString *str = [NSString stringWithFormat:@"%0.2f", value];
- return @(str.floatValue);
- }
- - (NSString *)description {
- NSString *content1 = [NSString stringWithFormat:@"content: minLightIntensity: %f, maxLightIntensity: %f, ambiguity:%f", (float)self.minLightIntensity, (float)self.maxLightIntensity, self.ambiguity];
- NSString *content2 = [NSString stringWithFormat:@"content: :leftEyeOcclusion: %f, rightEyeOcclusion: %f,noseOcclusion :%f", (float)self.leftEyeOcclusion, (float)self.rightEyeOcclusion, (float)self.noseOcclusion];
- NSString *content3 = [NSString stringWithFormat:@"content: :mouthOcclusion: %f, leftFaceOcclusion: %f,rightFaceOcclusion :%f; lowerJawOcclusion: %f", (float)self.mouthOcclusion, (float)self.leftFaceOcclusion, self.rightFaceOcclusion, self.lowerJawOcclusion];
- NSString *content4 = [NSString stringWithFormat:@"content: :upAndDownAngle: %f, :leftAndRightAngle %f,spinAngle :%f", (float)self.upAndDownAngle, (float)self.leftAndRightAngle, (float)self.spinAngle];
- NSString *value = [NSString stringWithFormat:@"%@%@%@%@", content1, content2, content3, content4];
- return value;
- }
- @end
|