问题是我的代码只适用于一张脸。如果我拍一张两张脸的照片,它就不会检测到第二张,而且两张以上的照片也是一样的。这是我的代码:
if let inputImage = imageView.image {
let ciImage = CIImage(CGImage: inputImage.CGImage!)
let options = [CIDetectorAccuracy: CIDetectorAccuracyHigh]
let faceDetector = CIDetector(ofType: CIDetectorTypeFace, context: nil, options: options)
let faces = faceDetector.featuresInImage(ciImage)
if let face = faces.first as? CIFaceFeature {
print("Found face at \(face.bounds)")
if face.hasLeftEyePosition {
print("Found left eye at \(face.leftEyePosition)")
}
if face.hasRightEyePosition {
print("Found right eye at \(face.rightEyePosition)")
}
if face.hasMouthPosition {
print("Found mouth at \(face.mouthPosition)")
}
}
print("\(faces.count)")
}发布于 2016-07-20 16:53:03
你的问题是你只在第一张脸上找到了,正因为如此:
if let face = faces.first as? CIFaceFeature {例如,您可以使用一个循环并对数组进行迭代,如下所示:
for item in faces {
if let face = item as? CIFaceFeature {
print("Found face at \(face.bounds)")
if face.hasLeftEyePosition {
print("Found left eye at \(face.leftEyePosition)")
}
if face.hasRightEyePosition {
print("Found right eye at \(face.rightEyePosition)")
}
if face.hasMouthPosition {
print("Found mouth at \(face.mouthPosition)")
}
}
}或者像这样,稍微好一点:
if let faces = faceDetector.featuresInImage(ciImage) as? [CIFaceFeature] {
for face in faces {
print("Found face at \(face.bounds)")
if face.hasLeftEyePosition {
print("Found left eye at \(face.leftEyePosition)")
}
if face.hasRightEyePosition {
print("Found right eye at \(face.rightEyePosition)")
}
if face.hasMouthPosition {
print("Found mouth at \(face.mouthPosition)")
}
}
}https://stackoverflow.com/questions/38485972
复制相似问题