如何解决检测人脸向上/向下的视觉框架
我正在使用 Vision 框架来检测面部方向。 VNFaceObservation 具有滚动和偏航属性,但不幸的是没有俯仰。如何计算音高值?我需要检查一个人是向上看还是向下看。
其他论坛上的某人建议我使用瞳孔和眉毛之间的距离,但我没有得到好的结果,尤其是当人们改变与屏幕的距离时,因为这种差异会有所不同。我试图用人脸 boundingBox 高度来划分差异,但这个值也是动态的,当用户抬头时,人脸周围的框会变小。
面部特征非常不同的人是另一回事。有没有人用 Vision 实现过这样的功能? 感谢您的帮助。
var origins: [CGPoint] = []
// origin based on left and right pupil
if let point = result.landmarks?.leftPupil?.normalizedPoints.first {
let origin = landmark(point: point,to: result.boundingBox)
origins.append(origin)
}
if let point = result.landmarks?.rightPupil?.normalizedPoints.first {
let origin = landmark(point: point,to: result.boundingBox)
origins.append(origin)
}
// Calculate the average y coordinate of the origins.
let avgY = origins.map { $0.y }.reduce(0.0,+) / CGFloat(origins.count)
// get eyebrow locations
var eyebrowOrigins: [CGPoint] = []
var heights: [CGPoint] = []
if let point = result.landmarks?.leftEyebrow?.normalizedPoints.first {
let origin = landmark(point: point,to: result.boundingBox)
eyebrowOrigins.append(origin)
}
if let point = result.landmarks?.rightEyebrow?.normalizedPoints.first {
let origin = landmark(point: point,to: result.boundingBox)
eyebrowOrigins.append(origin)
}
// Calculate the average y coordinate of the eye brows.
let eyebrowAvgY = eyebrowOrigins.map { $0.y }.reduce(0.0,+) / CGFloat(origins.count)
// compare pupils location to eye brows
var focusY: CGFloat = 0
let diff = avgY - eyebrowAvgY
// approximate face height inside the bounding Box
let faceHeight = result.boundingBox.height
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。