2015-08-04 7 views
13

का उपयोग कर आईफोन पर नहीं, मैं चित्रों पर चेहरों का पता लगाने के लिए कोरइमेज का उपयोग कर रहा हूं। यह सिम्युलेटर पर बहुत अच्छा काम करता है, लेकिन मेरे आईफोन 5 पर, यह लगभग आईफोन के कैमरे से ली गई तस्वीरों के साथ काम नहीं करता है (यह वेब पर चुने गए चित्रों के साथ काम करता है)।सिम्युलेटर पर चेहरे का पता लगाया गया लेकिन कोरइमेज फ्रेमवर्क

निम्नलिखित कोड दिखाता है कि मैं चेहरों का पता कैसे लगाता हूं। हर चित्रों के लिए, आवेदन लॉग

चरण 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") 
          // ... 

मैं अब तीन घंटे के लिए समाधान ढूंढ रहा हूं, और मैं काफी हताश हूं :)।

किसी भी सुझाव की वास्तव में सराहना की जाएगी!

अग्रिम धन्यवाद।

+0

छवियां एक ही संकल्प हैं? मुझे यकीन नहीं है कि कौन सा एल्गोरिदम ऐप्पल उपयोग करता है, लेकिन बहु सिस्टम पहचान कुछ प्रणालियों के साथ एक समस्या हो सकती है। क्या आपने उन छवियों को खींचने की कोशिश की है जिनमें फोन चेहरे का पता नहीं लगाता है, इसे सिम्युलेटर में डालता है और फिर देखता है कि यह काम करता है या नहीं? – ABC

+0

हां, यह हमेशा सिम्युलेटर पर काम करता है, यहां तक ​​कि आईफोन के कैमरे – Randy

+0

से ली गई तस्वीरों के साथ भी परिवर्तनीय चेहरे की विशेषताएं मूल रूप से फोन पर चलते समय खाली वेक्टर लौट रही हैं? – ABC

उत्तर

4

मुझे अपनी समस्या का समाधान करने के लिए वास्तव में अजीब तरीका मिला।

जब मेरी तस्वीरें उठा true को UIImagePickerController() की allowsEditing संपत्ति की स्थापना करके, सब कुछ ठीक काम करता है ... मैं क्यों नहीं समझ सकता है, लेकिन यह काम करता है।

संबंधित मुद्दे