#ios5 #core-image
#ios5 #core-image
Вопрос:
Я использую новые API-интерфейсы Core Image в iOS 5, которые выполняют автоматические улучшения. Однако массив, возвращаемый из autoAdjustmentFilters или autoAdjustmentFiltersWithOptions, никогда не удаляет эффект красных глаз, он возвращает только такие фильтры, как CIFaceBalance, CIVibrance и CIHighlightsAndShadows. Я даже попытался установить для ключа словаря autoAdjustmentFiltersWithOptions kCIImageAutoAdjustRedEye значение TRUE, хотя в документах указано, что по умолчанию это true. Я знаю, что приложение «Камера / фотографии» обнаружит эффект красных глаз на том же изображении, так что что-то не так.
Ответ №1:
Этот код вернет исправления Ciredey. Поскольку у меня нет никаких изображений с реальным эффектом красных глаз. Я просто погуглил и нашел это «redeye_incorrect_lg.jpg «. Это первое изображение женщины, возвращенное из Google images. Я обнаружил, что не все изображения с эффектом красных глаз могут быть обнаружены…. поэтому убедитесь, что у вас настоящий эффект красных глаз…
-(void) coreImageInit
{
NSString *sourcePath = [[NSBundle mainBundle] resourcePath];
NSString *file1 = [sourcePath stringByAppendingPathComponent:@"/redeye_incorrect_lg.jpg"];
UIImage *img = [[[UIImage alloc]initWithContentsOfFile:file1]autorelease];
CIImage *image = [[CIImage alloc]initWithImage:img];
NSLog(@"after ciimage: %@", kCIImageAutoAdjustEnhance);
NSDictionary *options = [NSDictionary dictionaryWithObject:@"NO" forKey:kCIImageAutoAdjustEnhance];
NSLog(@"options: %@", options);
NSArray *adjustments = [image autoAdjustmentFiltersWithOptions:options];
NSLog(@"adjustments: %@ ", adjustments);
}
Вот вывод моего журнала, который показывает, что он обнаружил эффект красных глаз:
11/4/11 10:13:19.231 AM iPadTestBed: after ciimage: kCIImageAutoAdjustEnhance
11/4/11 10:13:19.232 AM iPadTestBed: options: {
kCIImageAutoAdjustEnhance = NO;
}
11/4/11 10:13:19.879 AM iPadTestBed: adjustments: (
"<CIRedEyeCorrections: inputImage=<CIImage: 0x878a980 extent [0 0 370 427]> inputCameraModel=nil inputCorrectionInfo=(n {n averageSkinLuminance = 0;n bitmaskThreshold = "0.1372549";n bitmaskX = "0.372973";n bitmaskY = "0.5854801";n cornealReflectionThreshold = "0.854902";n cornealReflectionX = "0.3783784";n cornealReflectionY = "0.587822";n existingPupilAverage = "0.1607843";n existingPupilHigh = "0.345098";n existingPupilLow = "0.01176471";n existingPupilMedium = "0.1333333";n finalEyeCase = 0;n forceCase = 0;n fullImageHeight = 427;n fullImageWidth = 370;n imageOrientation = 1;n imageSignalToNoiseRatio = 20;n imageSpecialValue = 0;n interocularDistance = "0.2284475";n pointX = "0.3702703";n pointY = "0.587822";n pupilShadeAlignment = 1;n pupilShadeAverage = "0.2117647";n pupilShadeHigh = "0.2901961";n pupilShadeLow = "0.1372549";n pupilShadeMedium = "0.2117647";n repairRectangleMaximumX = "0.4162162";n repairRectangleMaximumY = "0.557377";n repairRectangleMinimumX = "0.3513514";n repairRectangleMinimumY = "0.6135831";n searchRectangleMaximumX = "0.4864865";n searchRectangleMaximumY = "0.4871194";n searchRectangleMinimumX = "0.2540541";n searchRectangleMinimumY = "0.6885245";n size = "0.012472";n snappedX = "0.3702703";n snappedY = "0.587822";n },n {n averageSkinLuminance = 0;n bitmaskThreshold = "0.09411766";n bitmaskX = "0.7081081";n bitmaskY = "0.6533958";n cornealReflectionThreshold = "0.8745099";n cornealReflectionX = "0.7081081";n cornealReflectionY = "0.6487119";n existingPupilAverage = "0.1686275";n existingPupilHigh = "0.3490196";n existingPupilLow = "0.03921569";n existingPupilMedium = "0.1372549";n finalEyeCase = 0;n forceCase = 0;n fullImageHeight = 427;n fullImageWidth = 370;n imageOrientation = 1;n imageSignalToNoiseRatio = 20;n imageSpecialValue = 0;n interocularDistance = "0.2284475";n pointX = "0.7081081";n pointY = "0.6557377";n pupilShadeAlignment = 1;n pupilShadeAverage = "0.2117647";n pupilShadeHigh = "0.2901961";n pupilShadeLow = "0.1372549";n pupilShadeMedium = "0.2117647";n repairRectangleMaximumX = "0.7405406";n repairRectangleMaximumY = "0.6229508";n repairRectangleMinimumX = "0.6864865";n repairRectangleMinimumY = "0.6697892";n searchRectangleMaximumX = "0.827027";n searchRectangleMaximumY = "0.5526932";n searchRectangleMinimumX = "0.5945946";n searchRectangleMinimumY = "0.7540984";n size = "0.010893";n snappedX = "0.7081081";n snappedY = "0.6557377";n }n)>"
)
Комментарии:
1. Спасибо за проверку. Я заметил, что на этом изображении это сработало. Проблема, с которой я столкнулся, заключается в том, что те же изображения, на которых будут удалены эффекты красных глаз в приложении «Фотографии», не всегда будут возвращать исправления Ciredey с помощью autoAdjustmentFiltersWithOptions.