objective-c - 将Vision人脸检测VNFaceLandmarkRegion2D点转换为要缩放的帧坐标
问题描述
我正在使用视觉框架来检测面部标志,它工作正常,但我需要转换面部标志,如鼻子、眼睛,为此我需要在帧坐标中获取鼻子、眼睛位置,因为面部标志是使用 VNFaceLandmarkRegion2D 点绘制的。
请让我知道如何将 VNFaceLandmarkRegion2D 点转换为框架坐标。因此,我可以获取要转换的位置或建议任何其他方式来转换面部地标。
解决方案
Joshua Newnham 的这段代码解决了你的问题。
func getTransformedPoints(
landmark:VNFaceLandmarkRegion2D,
faceRect:CGRect,
imageSize:CGSize) -> [CGPoint]{
// last point is 0.0
return landmark.normalizedPoints.map({ (np) -> CGPoint in
return CGPoint(
x: faceRect.origin.x + np.x * faceRect.size.width,
y: imageSize.height - (np.y * faceRect.size.height + faceRect.origin.y))
})
}