Фильтр основного изображения CIDepthBlurEffect не работает на iOS 11/Xcode 9.0

Я не могу заставить работать новый CIDepthBlurEffect. Я что-то делаю не так, или это известная проблема?

Ниже мой код в Objective-C:

    NSDictionary *dict = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:[NSNumber numberWithBool:YES], [NSNumber numberWithBool:YES], nil] forKeys:[NSArray arrayWithObjects:kCIImageAuxiliaryDisparity, @"kCIImageApplyOrientationProperty", nil]];

CIImage *disparityImage = [CIImage imageWithData:imageData options:dict];

CIFilter *ciDepthBlurEffect = [CIFilter filterWithName:@"CIDepthBlurEffect"];
[ciDepthBlurEffect setDefaults];
[ciDepthBlurEffect setValue:disparityImage forKey:@"inputDisparityImage"];
[ciDepthBlurEffect setValue:originalImage forKey:@"inputImage"];
CIImage *outputImage = [ciDepthBlurEffect valueForKey:@"outputImage"];

EAGLContext *previewEaglContext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];

CIContext *context = [CIContext contextWithEAGLContext:previewEaglContext options:@{kCIContextWorkingFormat :[NSNumber numberWithInt:kCIFormatRGBAh]} ];

CGImageRef cgimg = [context createCGImage:disparityImage fromRect:[disparityImage extent]];

image = [[UIImage alloc] initWithCGImage:cgimg];

CGImageRelease(cgimg);

person user1752054    schedule 16.06.2017    source источник
comment
Работает ли это на iOS 10?   -  person Artem Novichkov    schedule 20.06.2017
comment
Нет, этот фильтр поддерживается только в iOS 11.   -  person user1752054    schedule 20.06.2017
comment
Просто наткнулся на это. Я вижу ниже, что это было решено в более поздней бета-версии, но трудно понять, как это может работать, поскольку вы даже никогда не используете outputImage. то есть это вернет визуализацию карты глубины, а не размытое изображение.   -  person John Scalo    schedule 29.10.2018


Ответы (1)


Эта проблема была решена с выпуском Xcode 9 beta 2 и iOS 11 beta 2.

person user1752054    schedule 22.06.2017
comment
В чем была ваша проблема раньше, когда я применяю фильтр, неправильная часть изображения размыта, это то, что вы видели? У меня последняя бета-версия, поэтому я не уверен, что это код или ОС. - person Jimmy; 04.07.2017
comment
Убедитесь, что вы масштабируете изображение несоответствия. - person user1752054; 05.07.2017
comment
Любая идея, где я могу получить больше информации о масштабировании изображения несоответствия? - person Gizmodo; 02.10.2017
comment
Если вы используете фильтр CIDepthBlurEffect, изображение несоответствия автоматически увеличивается. если нет, используйте CIEdgePreserveUpsampleFilter. - person user1752054; 03.10.2017