>我在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)
谢谢!
玄虎在评论中是对的。事实证明,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
}