Подтвердить что ты не робот

Лица, обнаруженные на симуляторе, но не на iphone с использованием инфраструктуры CoreImage

Я использую 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")
                            // ...

Я искал решение в течение трех часов, и я довольно отчаянный:).

Любое предложение было бы действительно оценено!

Спасибо заранее.

4b9b3361

Ответ 1

Я нашел действительно странный способ решить мою проблему.

Установив свойство allowsEditing UIImagePickerController() на true при выборе моих фотографий, все работает отлично... Я не понимаю, почему, но он работает.