这只是我尝试过的一些非常标准的代码。我想做的是把两个眼球和一张嘴巴放在一个非常稳定的肖像图像上。以下是我尝试过的方法:
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;
}
}问题是我的图像确实移动了它们的中心,但移动到了一个非常尴尬的位置(也就是不是正确的位置)!虽然它们看起来有正确的距离关系,但嘴巴在顶部。这意味着有:
嘴巴在上面,下面几厘米有两个相距几厘米的眼球。因此,它们会根据图像视图进行正确缩放,只是位置错误而已
发布于 2012-06-15 19:58:47
CIImage和UIImage坐标系是相反的,因此您必须转换坐标。例如:
CGPoint ciMmouthCenter = faceFeature.mouthPosition;
CGPoint uiMmouthCenter;
uiMouthCenter.x = tim.image.size.width - ciMouthCenter.x;
uiMouthCenter.y = tim.image.size.height - ciMouthCenter.y;发布于 2013-05-22 06:06:12
你应该使用苹果的'SquareCam‘应用。它在任何方向的前置和后置摄像头的正确位置放置一个正方形。对于我的应用程序,我只是从决定‘faceRect’的'SquareCam‘中剥离了代码。对于mouthPosition,我沿着faceRect对x值和y值的百分比进行插值。
https://stackoverflow.com/questions/11050079
复制相似问题