Objective c 红眼矫正
为了增加红眼矫正效果,我点击了以下链接: 通过吊舱安装在库上方。在我的类中添加了以下代码Objective c 红眼矫正,objective-c,filter,face-detection,Objective C,Filter,Face Detection,为了增加红眼矫正效果,我点击了以下链接: 通过吊舱安装在库上方。在我的类中添加了以下代码 UIImage *redEyeImage = [UIImage imageNamed:@"Userimage"]; if (redEyeImage) { UIImage *newRemovedRedEyeImage = [redEyeImage redEyeCorrection]; if (newRemovedRedEyeImage) { imgView.image =
UIImage *redEyeImage = [UIImage imageNamed:@"Userimage"];
if (redEyeImage) {
UIImage *newRemovedRedEyeImage = [redEyeImage redEyeCorrection];
if (newRemovedRedEyeImage) {
imgView.image = newRemovedRedEyeImage;
}
}
但我没有得到所需的输出。我有什么遗漏吗?或者是否有其他库来实现这个概念。请建议
谢谢 您可以在两条if语句之后的行上设置断点,然后运行应用程序,查看它们是否被命中(可能
redeyimage
不存在,或者newremovedeyimage
不存在)
另一种简单的检查方法是:
UIImage *redEyeImage;
UIImage *newRemovedRedEyeImage;
redEyeImage = [UIImage imageNamed:@"Userimage"];
if (redEyeImage) {
newRemovedRedEyeImage = [redEyeImage redEyeCorrection];
if (newRemovedRedEyeImage) {
imgView.image = newRemovedRedEyeImage;
}
}
NSLog(@"redEyeImage: %@", (redEyeImage != nil ? @"exists" : @"nil"));
NSLog(@"newRemovedRedEyeImage: %@", (newRemovedRedEyeImage != nil ? @"exists" : @"nil"));
然后运行此程序,查看底部的两个日志打印内容。您可以在两个if语句之后的行上设置断点,然后运行应用程序,查看它们是否被击中(可能
redeyimage
不存在或newremovedeyimage
不存在)
另一种简单的检查方法是:
UIImage *redEyeImage;
UIImage *newRemovedRedEyeImage;
redEyeImage = [UIImage imageNamed:@"Userimage"];
if (redEyeImage) {
newRemovedRedEyeImage = [redEyeImage redEyeCorrection];
if (newRemovedRedEyeImage) {
imgView.image = newRemovedRedEyeImage;
}
}
NSLog(@"redEyeImage: %@", (redEyeImage != nil ? @"exists" : @"nil"));
NSLog(@"newRemovedRedEyeImage: %@", (newRemovedRedEyeImage != nil ? @"exists" : @"nil"));
然后运行此命令,查看底部的两个日志打印的内容。最后,我用以下代码解决了此问题:
UIImage *img = [UIImage imageNamed:@"images.png"];
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);
for (CIFilter * filter in adjustments)
{
[filter setValue:image forKey:kCIInputImageKey];
image = filter.outputImage;
}
CIContext *context = [CIContext contextWithOptions:nil];
CGImageRef cgImage = [context createCGImage:image fromRect:image.extent];
UIImage *enhancedImage = [[UIImage alloc] initWithCGImage:cgImage];
CGImageRelease(cgImage);
self.img.image = enhancedImage;
最后,我用以下代码解决了这个问题:
UIImage *img = [UIImage imageNamed:@"images.png"];
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);
for (CIFilter * filter in adjustments)
{
[filter setValue:image forKey:kCIInputImageKey];
image = filter.outputImage;
}
CIContext *context = [CIContext contextWithOptions:nil];
CGImageRef cgImage = [context createCGImage:image fromRect:image.extent];
UIImage *enhancedImage = [[UIImage alloc] initWithCGImage:cgImage];
CGImageRelease(cgImage);
self.img.image = enhancedImage;
你确定键入的图像名称正确吗?你能告诉我if语句是否执行了吗?是的,if语句正在执行。但结果保持不变。你确定键入的图像名称正确吗?你能告诉我if语句是否执行了吗?是的,if语句正在执行。但结果仍然是一样的相同的