人脸检测问题使用CIDetector

我正在研究一个应用程序,我必须检测左眼,右眼和嘴巴位置。 我有一个imageView我self.view和imageView包含一个人脸图像,现在我想要得到双眼和嘴巴坐标。 我已经看到了2-3个示例代码,但所有的代码都大致相同,我们必须将我的视图反转为匹配我不想要的坐标,因为我的视图有一些其他控件。 还有一件事他们都在使用

UIImageView *imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"image.png"]]; 

但我的imageView有框架,我不能初步与图像。 当我这样做时,我发现faceFeature的眼睛和嘴巴坐标错误。

我已经从这个示例代码开始我的代码,但是在这个视图中正在反转它的Y坐标。

任何人都可以帮助我如何检测UIImageView的图像上的脸部的眼睛和嘴巴的位置,而不会颠倒我的self.view。

让我知道如果我的问题不够清楚。

任何帮助将不胜感激,提前致谢!

解决了! – 编辑类有一个faceContainer包含所有的面部对象(嘴巴和眼睛),然后这个容器旋转,这就是所有。 显然这很粗糙,但确实有效。 这是一个链接, http://www.jonathanlking.com/download/AppDelegate.m 。 然后用它replace示例代码中的应用程序委托。

– 旧post –

看看这个苹果文档 ,并从这个苹果讲话向前滑动42。 另外,你也许应该看这个演讲,因为它有一个你想要实现的演示,叫做“在iOS和Mac OS X上使用核心映像”,在这里 。

这里的技巧是将返回的点和边界从CIDetector转换为坐标,而不是翻转自己的视图。 CIImage的原点在左下angular,您需要将其转换为左上angular

 int height = CVPixelBufferGetHeight(pixelBuffer); CGAffineTransform transform = CGAffineTransformMakeScale(1, -1); transform = CGAffineTransformTranslate(transform, 0, -1 * height); /* Do your face detection */ CGRect faceRect = CGRectApplyAffineTransform(feature.bounds, transform); CGPoint mouthPoint = CGPointApplyAffineTransform(feature.mouthPosition, transform); // Same for eyes, etc 

对于你关于UIImageView的第二个问题,你只需要做

 imageview.image = yourImage 

在你初始化你的imageview之后