Переменная распознавания человеческого лица (google-cloud-vision) - PullRequest
0 голосов
/ 25 февраля 2019

Я работаю над внедрением распознавания человеческого лица в приложение для iOS.Я получаю много тегов, таких как «очки» или «улыбающийся», но не вижу фактической переменной, которая говорит мне, что это человеческое лицо (и с какой степенью уверенности).

Какую переменную я пропускаю и как мы можем использовать эту функцию?

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Вы можете выполнить несколько шагов для обнаружения лиц по изображению.

  1. Создать свой URLRequest

    func createRequest() -> URLRequest? {
        // Create your request URL
        if let url =  URL(string: "YOUR_API_KEY") {
            var request = URLRequest(url: url)
            request.httpMethod = "POST"
            request.addValue("application/json", forHTTPHeaderField: "Content-Type")
            request.addValue(Bundle.main.bundleIdentifier ?? "", forHTTPHeaderField: "X-  Ios-Bundle-Identifier")
            let jsonRequest = [
                "requests": [
                    "features": [
                        [
                            "type": "FACE_DETECTION",
                            "maxResults": 10 //change as per your requirement
                        ]
                    ]
                ]
            ]
            let jsonData = try? JSONSerialization.data(withJSONObject: jsonRequest)
            request.httpBody = jsonData
            return request
        }
        return nil
    }
    
  2. Запустить запрос в фоновом режимепоток

    let task: URLSessionDataTask = URLSession.shared.dataTask(with: request) { (data, response, error) in
        guard let data = data, error == nil else {
            print(error?.localizedDescription ?? "")
            return
        }
        print(data)// Analyze with this data
    }
    task.resume()
    
  3. Анализ данных (в главном потоке, если вы хотите обновить какой-либо компонент пользовательского интерфейса)

    DispatchQueue.main.async(execute: {
            do {
                guard let json =
                    try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any] else { return }
                guard let responses = json["responses"] as? NSArray else { return }
                if responses.count > 0 {
                    guard let response = responses.firstObject as? [String: Any] else { return }
                    guard let faceAnnotations = response["faceAnnotations"] as? NSArray else {
                        print(false, "No face detected, please try another photo.")
                        return
                    }
                    if faceAnnotations.count > 0 {
                        print("Face successfully detected: \(faceAnnotations.count)")
                    }  else {
                        print("No face detected, please try another photo.")
                    }
                } else {
                    print("Error while face detection process, please try again.")
                }
            } catch {
                print("Error while face detection process, please try again.")
            }            
        })
0 голосов
/ 26 февраля 2019

Я думаю, что вы не можете использовать правильный тип объекта , так как кажется, что вы получаете метки вместо лицевых атрибутов.

Я рекомендую вам ознакомиться с документацией Обнаружение лиц и Обнаружение лиц , где вы можете найти подробную информацию и некоторые полезные примеры, которые вы можете использовать в качестве справочной информацииподробнее о процессе распознавания лиц с помощью Vision API .

...