使用CoreImage框架在模拟器上检测到面部但不在iphone上检测到面部

Ran*_*ndy 13 core-image face-detection

我正在使用CoreImage来检测图片上的面孔.它在模拟器上运行得很好,但在我的iphone 5上,它几乎不能用于使用iphone相机拍摄的照片(它适用于在网络上拍摄的照片).

以下代码显示了我如何检测面部.对于每张图片,应用程序都会记录

第1步:处理图像

但它只记录

第2步:检测到面部

对于他们中的一小部分,几乎每个面部都在模拟器上检测到或者如果我使用来自网络的图片.

var context: CIContext = {
            return CIContext(options: nil)
            }()
        let detector = CIDetector(ofType: CIDetectorTypeFace,
            context: context,
            options: [CIDetectorAccuracy: CIDetectorAccuracyHigh])

        let imageView = mainPic

        for var index = 0; index < picsArray.count; index++ {

            if !(picsArray.objectAtIndex(index).objectAtIndex(1) as! Bool) {

                var wholeImageData: AnyObject = picsArray.objectAtIndex(index)[0]

                if wholeImageData.isKindOfClass(NSData) {

                    let wholeImage: UIImage = UIImage(data: wholeImageData as! NSData)!
                    if wholeImage.isKindOfClass(UIImage) {

                        NSLog("step 1 : image will be processed")

                        let processedImage = wholeImage
                        let inputImage = CIImage(image: processedImage)
                        var faceFeatures: [CIFaceFeature]!
                        if let orientation: AnyObject = inputImage.properties()?[kCGImagePropertyOrientation] {
                            faceFeatures = detector.featuresInImage(inputImage, options: [CIDetectorImageOrientation: orientation]) as! [CIFaceFeature]
                        } else {
                            faceFeatures = detector.featuresInImage(inputImage) as! [CIFaceFeature]
                        }

                        let inputImageSize = inputImage.extent().size
                        var transform = CGAffineTransformIdentity
                        transform = CGAffineTransformScale(transform, 1, -1)
                        transform = CGAffineTransformTranslate(transform, 0, -inputImageSize.height)

                        for faceFeature in faceFeatures {

                            NSLog("step 2 : face detected")
                            // ...
Run Code Online (Sandbox Code Playgroud)

我现在一直在寻找一个解决方案三个小时,我非常绝望:).

任何建议将非常感谢!

提前致谢.

Ran*_*ndy 4

我找到了一个非常奇怪的方法来解决我的问题。

通过在选择我的图片时设置toallowsEditing的属性,一切正常......我不明白为什么,但它有效。UIImagePickerController()true