使用前置摄像头拍摄时未检测到脸部

时间:2017-08-15 09:31:00

标签: ios face-detection microsoft-cognitive

我在iPhone应用中使用Azure Face Recognition API。当我使用后置摄像头拍照时它工作得很好但是当我使用前置摄像头时,API无法检测到脸部。

我尝试将(正面)照片传输到我的笔记本电脑并将其拖入文档中的测试区域,检测到脸部很好。

这让我相信可能会有一些特定于前置照片的元数据或标志会混淆API?那些在通过浏览器上传时会被删除吗?

更新

以下是我使用AlamoFire上传文件的方式:

let data = UIImageJPEGRepresentation(photo, 0.5)
let url = "https://.../detect"
let octetHeaders = ["Content-Type": "application/octet-stream", "Ocp-Apim-Subscription-Key": "..."]
Alamofire.upload(data, to: url, method: .post, headers: octetHeaders)

谢谢!

1 个答案:

答案 0 :(得分:2)

宣武在评论中说得对。原来iPhone没有旋转图像 - 它只是设置一个方向EXIF标签。

在上传前将照片硬旋转使其全部工作:

func normalizeImageRotation(_ image: UIImage) -> UIImage {
    if (image.imageOrientation == UIImageOrientation.up) { return image }

    UIGraphicsBeginImageContextWithOptions(image.size, false, image.scale)
    image.draw(in: CGRect(x: 0, y: 0, width: image.size.width, height: image.size.height))
    let normalizedImage = UIGraphicsGetImageFromCurrentImageContext()!
    UIGraphicsEndImageContext()
    return normalizedImage
}