Я использую CoreImage для обнаружения лиц на изображениях. Он отлично работает на симуляторе, но на моем iphone 5 он почти никогда не работает с фотографиями, снятыми с камерой iphone (он работает с фотографиями, выбранными в Интернете).Лица, обнаруженные на симуляторе, но не на iphone с использованием рамки CoreImage
Следующий код показывает, как я обнаруживаю лица. Для каждой фотографии, приложение регистрирует
шаг 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")
// ...
Я искал решение в течение трех часов, и я довольно отчаянный :).
Любое предложение было бы действительно оценено!
Заранее спасибо.
- это изображения того же разрешения? Я не уверен, какой алгоритм использует Apple, но обнаружение нескольких масштабов может быть проблемой для некоторых систем. вы пытались потянуть изображения, в которых телефон не обнаруживает лица, помещает их в симулятор, а затем видит, работает ли он? – ABC
Да, он всегда работает на симуляторе, даже с фотографиями, снятыми с камеры iPhone – Randy
, поэтому переменная faceFeatures возвращает пустой вектор в основном при запуске на телефоне? – ABC