我CoreImage在IOS上使用它来检测图像中的面部.当有多个面时,它可以正常工作,但不适用于这样的简单面:
脸很大很明显,但CoreImage无法察觉.我想这可能是因为我的kCGImagePropertyOrientation.
我把它设置为5,因为这就是在线教程所做的.但是,我正在处理的图像是用户上传的,所以我事先并不知道脸部的方向.有没有办法尝试所有方向?CoreImage当手头不知道图像时,实施面部检测的正确方法是什么?
这是我的代码:
var imageOptions = Dictionary<String,Any>()
imageOptions[CIDetectorImageOrientation] = 5
imageOptions[CIDetectorSmile] = true
let image = CIImage(cgImage: imageView.image!.cgImage!)
let accuracy = [CIDetectorAccuracy: CIDetectorAccuracyHigh]
let faceDetector = CIDetector(ofType: CIDetectorTypeFace, context: nil, options: accuracy)
let faces = faceDetector?.features(in: image, options: imageOptions as? [String : AnyObject])
Run Code Online (Sandbox Code Playgroud)
你可以这样做
var imageOrienttion = 0
switch (YourUIImage.imageOrientation) {
case UIImageOrientation.up:
imageOrienttion = 1
break;
case UIImageOrientation.down:
imageOrienttion = 3
break;
case UIImageOrientation.left:
imageOrienttion = 8
break;
case UIImageOrientation.right:
imageOrienttion = 6
break;
case UIImageOrientation.upMirrored:
imageOrienttion = 2
break;
case UIImageOrientation.downMirrored:
imageOrienttion = 4
break;
case UIImageOrientation.leftMirrored:
imageOrienttion = 5
break;
case UIImageOrientation.rightMirrored:
imageOrienttion = 7
break;
}
imageOptions[CIDetectorImageOrientation] = imageOrienttion
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
186 次 |
| 最近记录: |