2017-07-21 11 views
6

मैं आईओएस पर CoreImage उपयोग कर रहा हूँ पर आईओएस CoreImage चेहरे का पता लगाने के लिए एक छवि में चेहरे का पता लगाने के। यह ठीक काम करता है जब वहाँ कई चेहरे हैं, लेकिन इस तरह के इस एक के रूप में सरल चेहरों के लिए काम नहीं करता:सभी झुकाव

enter image description here

चेहरा वास्तव में बड़ी और स्पष्ट है, लेकिन 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]) 
+0

की तरह यह कर सकते हैं चेहरे का पता लगाने अगर तुम होने के लिए झुकाव के किसी भी प्रकार की अनुमति देना चाहते संसाधित हो सकता है आपको छवि मेटाडेटा से अभिविन्यास को पढ़ना पड़ सकता है, फिर उस फ़िल्टर को अपने फ़िल्टर में पास कर दें। – Pochi

उत्तर

3

आप केवल निर्दिष्ट उन्मुखीकरण के लिए काम करेंगे इस

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 
+0

छवि अपलोड की गई है उपयोगकर्ता। यह कोड ऐसा लगता है कि यह छवि मेटा-डेटा पढ़ रहा है। मेरा सवाल यह है कि, क्या आईओएस को प्रत्येक छवि के लिए UIImageOrientation मिल सकता है? यहां तक ​​कि उपयोगकर्ता द्वारा अपलोड किए गए लोग भी? –

+0

आईओएस अभिविन्यास निर्धारित करने में सक्षम होना चाहिए। आप बस इस कोड को आजमा सकते हैं और देख सकते हैं कि यह काम है या नहीं। या आप केवल तब तक सभी मूल्यों के माध्यम से लूप कर सकते हैं जब तक कि आप कोई चेहरा नहीं ढूंढ पाएंगे। –

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