首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CIFaceFeature点不正确

CIFaceFeature点不正确
EN

Stack Overflow用户
提问于 2012-06-15 19:45:39
回答 2查看 2.2K关注 0票数 5

这只是我尝试过的一些非常标准的代码。我想做的是把两个眼球和一张嘴巴放在一个非常稳定的肖像图像上。以下是我尝试过的方法:

代码语言:javascript
复制
 CIImage *image = [CIImage imageWithCGImage: [tim.image CGImage]];

CIDetector *detector = [CIDetector detectorOfType:CIDetectorTypeFace context:nil options: [NSDictionary dictionaryWithObject:CIDetectorAccuracyHigh forKey: CIDetectorAccuracy]];

NSArray *feats = [detector featuresInImage: image];

for (CIFaceFeature *faceFeature in feats) {

    if (faceFeature.hasLeftEyePosition) {

        eyeLeft.center = faceFeature.leftEyePosition;
    }

    if (faceFeature.hasRightEyePosition) {

        eyeRight.center = faceFeature.rightEyePosition;
    }

    if (faceFeature.hasMouthPosition) {

        moth.center = faceFeature.mouthPosition;
    }
}

问题是我的图像确实移动了它们的中心,但移动到了一个非常尴尬的位置(也就是不是正确的位置)!虽然它们看起来有正确的距离关系,但嘴巴在顶部。这意味着有:

嘴巴在上面,下面几厘米有两个相距几厘米的眼球。因此,它们会根据图像视图进行正确缩放,只是位置错误而已

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-15 19:58:47

CIImageUIImage坐标系是相反的,因此您必须转换坐标。例如:

代码语言:javascript
复制
CGPoint ciMmouthCenter = faceFeature.mouthPosition;
CGPoint uiMmouthCenter;
uiMouthCenter.x = tim.image.size.width - ciMouthCenter.x;
uiMouthCenter.y = tim.image.size.height - ciMouthCenter.y;
票数 10
EN

Stack Overflow用户

发布于 2013-05-22 06:06:12

你应该使用苹果的'SquareCam‘应用。它在任何方向的前置和后置摄像头的正确位置放置一个正方形。对于我的应用程序,我只是从决定‘faceRect’的'SquareCam‘中剥离了代码。对于mouthPosition,我沿着faceRect对x值和y值的百分比进行插值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11050079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档