Sto utilizzando CoreImage per rilevare i volti sulle immagini. Funziona benissimo sul simulatore, ma sul mio iphone 5, non funziona quasi mai con le immagini scattate con la fotocamera dell'iphone (funziona con le immagini selezionate sul web).Volti rilevati sul simulatore ma non su iphone utilizzando il framework CoreImage
Il codice seguente mostra come rilevare i volti. Ogni immagini, l'applicazione registra
passaggio 1: immagine verrà elaborata
Ma solo registra
passaggio 2: faccia rilevato
per pochi loro, mentre quasi tutti i volti sono rilevati sul simulatore o se utilizzo immagini dal web.
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")
// ...
Sono in cerca di una soluzione da tre ore e sono abbastanza disperata :).
Qualsiasi suggerimento sarebbe molto apprezzato!
Grazie in anticipo.
le immagini hanno la stessa risoluzione? Non sono sicuro di quale algoritmo usi Apple, ma il rilevamento su più scale può essere un problema con alcuni sistemi. hai provato a tirare le immagini in cui il telefono non rileva i volti, inserendolo nel simulatore e poi verificando se funziona? – ABC
Sì, funziona sempre sul simulatore, anche con le foto scattate dalla fotocamera dell'iPhone – Randy
, quindi la variabile faceFeatures restituisce un vettore vuoto in pratica quando si esegue il telefono? – ABC