2017-07-21 18 views
6

Bir görüntüdeki yüzleri algılamak için IOS üzerinde CoreImage kullanıyorum. Birden yüz varken çalışıyor, ancak bunun gibi basit yüzler için çalışmıyor:IOS CoreImage Tüm Yönlerde Yüz Algılama

enter image description here

yüzü gerçekten büyük ve açıktır, ancak CoreImage bunu algılayamaz. Bunun benim kCGImagePropertyOrientation yüzünden olabileceğini düşünüyorum.

Bunu 5 olarak ayarladım, çünkü çevrimiçi bir öğreticinin yaptığı şey buydu. Ancak, işlediğim görüntüler kullanıcı tarafından yüklendi, bu yüzden yüzün yönünü önceden bilmiyorum. Tüm yönelimleri denemenin bir yolu var mı? Görüntüler daha önce bilinmediğinde CoreImage yüz tanıma uygulamasının doğru yolu nedir? olmak yönelimleri her türlü izin vermek isterseniz

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

gibi yüz algılama yapabilir:

Bu

benim kodudur işlenmiş görüntü metadatasının yönünü okumak zorunda kalabilirsiniz, daha sonra bu yönlendirmeyi filtrenize aktarın. – Pochi

cevap

3

Sen, yalnızca belirtilen yönlendirme için çalışacak bu

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

Resim, kullanıcı tarafından yüklendi. Bu kod, görüntü meta verilerini okuyor gibi görünüyor. Sorum şu: Her bir görüntü için UIImageOrientation'ı alabilir miyim? Kullanıcı tarafından yüklenenler bile mi? –

+0

iOS, yönlendirmeyi belirleyebilmelidir. Bu kodu deneyebilir ve çalışıp çalışmadığını görebilirsiniz. Ya da bir yüz bulana kadar tüm değerlerden geçebilirsiniz. –

İlgili konular