これは私が試したかなり標準的なコードです。私がやろうとしているのは、非常に安定したポートレート画像に 2 つの眼球と 1 つの口を配置することです。これが私が試したことです:
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;
}
}
問題は、私の画像が中心を移動しますが、非常にぎこちない位置に移動することです (別名、正しい位置ではありません)! 正しい距離関係で表示されますが、口が上にあることを除きます。これが意味することは、次のようなものがあるということです:
上に口、数センチ下に数センチ離れた2つの眼球があります。したがって、それらは画像ビューに従って正しくスケーリングされますが、間違った場所にあるだけです