我如何使用找到的脸部坐标(核心图像)


    UIImage* image = [UIImage imageNamed:@ "face.png" ];  
    UIImageView testImage = [[UIImageView alloc] initWithImage: image];  
    [testImage setTransform:CGAffineTransformMakeScale(1, -1)];  
    [[[UIApplication sharedApplication] delegate].window setTransform:  
CGAffineTransformMakeScale(1, -1)];  
    [testImage setFrame:CGRectMake(0, 0, testImage.image.size.width,  
testImage.image.size.height)];  
    [self.view addSubview:testImage];  
    CIImage* ciimage = [CIImage imageWithCGImage:imag​​e.CGImage];  
    NSDictionary* opts = [NSDictionary dictionaryWithObject:  
CIDetectorAccuracyHigh forKey:CIDetectorAccuracy];  
    CIDetector* detector = [CIDetector detectorOfType:CIDetectorTypeFace  
context:nil options:opts];  
    NSArray* features = [detector featuresInImage:ciimage];  
    for  (CIFaceFeature *faceFeature in features)
    {  
        CGFloat faceWidth = faceFeature.bounds.size.width;  
        UIView* faceView = [[UIView alloc] initWithFrame:faceFeature.bounds];                    
        faceView.layer.borderWidth = 1;  
        faceView.layer.borderColor = [[UIColor redColor] CGColor];  
        [self.view addSubview:faceView];          
    }  

我如何找到面部坐标?

我尝试使用facefeature.bounds.origin.xfacefeature.bounds.origin.y

,但有时不是正确的坐标

如何找到坐标?

------------------------- 2016/04/10 --------------------------------------------这是我的问题iosx,y比C#

相反

这是其背后的基本思想,cidetector允许您从图像中推断出左眼,右眼和嘴巴的点。由此,我们可以进行一些基本的数学来创建一个跨越这些要点之间的矩形,例如

for  (CIFaceFeature *faceFeature in features)
{
    CGPoint lefteye = faceFeature.leftEyePosition;
    CGPoint righteye = faceFeature.rightEyePosition;
    CGPoint mouth = faceFeature.mouthPosition;
    //Face Rectangle
    CGRect faceRectangle = CGRectMake(lefteye.x, lefteye.y, righteye.x - lefteye.x, mouth.y - righteye.y);
    //Face Center
    CGPoint faceCenter = CGPointMake(faceRectangle.origin.x + (faceRectangle.size.width / 2), faceRectangle.origin.y + (faceRectangle.size.height / 2));
    UIView* faceView = [[UIView alloc] initWithFrame:faceRectangle];
    faceView.layer.borderWidth = 1;
    faceView.layer.borderColor = [[UIColor redColor] CGColor];
    [self.view addSubview:faceView];          
}

请记住,我现在不在计算机上为您测试该功能的这一部分,但是我相信检测器输出的坐标是符合输入图像的分辨率。当尝试使用iOS点坐标系将CREATE RECT应用于ON屏幕视图时,这将导致不准确。这样说您要做的就是通过convertRect函数运行新创建的矩形以获得适当的坐标。

最新更新