【问题标题】:VNDetectFaceRectanglesRequest always returns 0 for yaw/pitch/rollVNDetectFaceRectanglesRequest 对于偏航/俯仰/滚动总是返回 0
【发布时间】:2019-03-07 12:01:14
【问题描述】:

我正在尝试使用 Vision 框架获取图像中面部的俯仰/偏航/滚动,但所有值始终为 0。图像应该很容易处理(主要是前瞻性肖像)。

我已通过在它们上使用 Amazon Rekognition 成功获得了这些值,因此图像本身不是问题。 (我需要做一批大约 70,000 个,因此对它们使用 rekogniton 会变得昂贵且缓慢。)

这是请求代码:

let faceLandmarksRequest = VNDetectFaceRectanglesRequest(completionHandler: handleRectangles)

let requestHandler = VNImageRequestHandler(cgImage: cgImage!, orientation: CGImagePropertyOrientation.right ,options: [:])

do {
    try requestHandler.perform([faceLandmarksRequest])
} catch {
    print(error)
}

这是处理程序代码:

func handleRectangles(request: VNRequest, errror: Error?) {

    guard let observations = request.results as? [VNFaceObservation] else {
        fatalError("unexpected result type!")
    }

    for face in observations {

        print("\(face.yaw))") // always zero

    }
}

任何帮助表示赞赏:)

【问题讨论】:

  • 在您的处理程序代码中,您传递了guard let 语句,但您的错误(错误?)实际上为零吗?
  • 保护语句没有被触发。实际的偏航、横滚和俯仰值与数字一样为零,而不是零或错误。
  • 是的,我明白这一点,但有些事情没有按预期工作,您忽略了完成处理程序的错误参数。当然值得检查?否则就不会存在。
  • 嗯,好的。我明白你现在的意思了!我会检查。不过,它正在使边界框正常。
  • 错误是 nil 所以也不是这样。

标签: swift swift4


【解决方案1】:

实际上滚动和偏航工作,但现在它们非常粗糙。 你总是得到零,因为滚动和偏航(截至 2019 年)是一组离散的 6 或 7 个值,而不是具有精确面部方向的连续值范围。

尝试“更旋转”的脸。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-03
    相关资源
    最近更新 更多